diff --git a/javalib/src/android/system/virtualmachine/VirtualMachine.java b/javalib/src/android/system/virtualmachine/VirtualMachine.java
index 1aa8949..c200d00 100644
--- a/javalib/src/android/system/virtualmachine/VirtualMachine.java
+++ b/javalib/src/android/system/virtualmachine/VirtualMachine.java
@@ -940,6 +940,7 @@
      * @return a {@link VirtualMachineDescriptor} instance that represents the VM's state.
      * @throws VirtualMachineException if the virtual machine is not stopped, or the state could not
      *     be captured.
+     * @hide
      */
     @NonNull
     public VirtualMachineDescriptor toDescriptor() throws VirtualMachineException {
diff --git a/javalib/src/android/system/virtualmachine/VirtualMachineDescriptor.java b/javalib/src/android/system/virtualmachine/VirtualMachineDescriptor.java
index 6590695..b51cbce 100644
--- a/javalib/src/android/system/virtualmachine/VirtualMachineDescriptor.java
+++ b/javalib/src/android/system/virtualmachine/VirtualMachineDescriptor.java
@@ -33,8 +33,8 @@
  * @hide
  */
 public final class VirtualMachineDescriptor implements Parcelable {
-    private final @NonNull ParcelFileDescriptor mConfigFd;
-    private final @NonNull ParcelFileDescriptor mInstanceImgFd;
+    @NonNull private final ParcelFileDescriptor mConfigFd;
+    @NonNull private final ParcelFileDescriptor mInstanceImgFd;
     // TODO(b/243129654): Add trusted storage fd once it is available.
 
     @Override
@@ -43,13 +43,14 @@
     }
 
     @Override
-    public void writeToParcel(Parcel out, int flags) {
+    public void writeToParcel(@NonNull Parcel out, int flags) {
         mConfigFd.writeToParcel(out, flags);
         mInstanceImgFd.writeToParcel(out, flags);
     }
 
+    @NonNull
     public static final Parcelable.Creator<VirtualMachineDescriptor> CREATOR =
-            new Parcelable.Creator<VirtualMachineDescriptor>() {
+            new Parcelable.Creator<>() {
                 public VirtualMachineDescriptor createFromParcel(Parcel in) {
                     return new VirtualMachineDescriptor(in);
                 }
@@ -61,7 +62,6 @@
 
     /**
      * @return File descriptor of the VM configuration file config.xml.
-     * @hide
      */
     @NonNull
     ParcelFileDescriptor getConfigFd() {
@@ -70,7 +70,6 @@
 
     /**
      * @return File descriptor of the instance.img of the VM.
-     * @hide
      */
     @NonNull
     ParcelFileDescriptor getInstanceImgFd() {
