diff --git a/hidl2aidl/test/Android.bp b/hidl2aidl/test/Android.bp
index 7897c8a..e364b4b 100644
--- a/hidl2aidl/test/Android.bp
+++ b/hidl2aidl/test/Android.bp
@@ -127,6 +127,7 @@
 
 aidl_interface {
     name: "hidl2aidl_test_gen",
+    owner: "test",
     stability: "vintf",
     srcs: [":hidl2aidl_test_gen_aidl"],
     backend: {
@@ -138,7 +139,6 @@
         "-Werror",
         "-Wno-mixed-oneway",
     ],
-    versions: ["1"],
 }
 
 cc_test_library {
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/.hash b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/.hash
deleted file mode 100644
index beb0d24..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/.hash
+++ /dev/null
@@ -1 +0,0 @@
-2e37131f8564026098f934fb642ac75f2a4b03fb
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/ArrayFoo.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/ArrayFoo.aidl
deleted file mode 100644
index 1dce1a2..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/ArrayFoo.aidl
+++ /dev/null
@@ -1,27 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable ArrayFoo {
-  byte[] a;
-  int[] b;
-  hidl2aidl.test.Value[] c;
-  String[] d;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/FooFlag.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/FooFlag.aidl
deleted file mode 100644
index 46b32b9..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/FooFlag.aidl
+++ /dev/null
@@ -1,27 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@Backing(type="int") @VintfStability
-enum FooFlag {
-  NONE = 0,
-  FIRST = 1,
-  SECOND = 2,
-  THIRD = 4,
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IBar.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IBar.aidl
deleted file mode 100644
index cbd8a37..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IBar.aidl
+++ /dev/null
@@ -1,26 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-interface IBar {
-  void extraMethod(in hidl2aidl.test.IBarInner inner);
-  String someBar(in String a, in byte b);
-  oneway void someFoo(in byte a);
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IBarInner.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IBarInner.aidl
deleted file mode 100644
index 78c9d3b..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IBarInner.aidl
+++ /dev/null
@@ -1,24 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable IBarInner {
-  int a;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IFoo.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IFoo.aidl
deleted file mode 100644
index b990a90..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IFoo.aidl
+++ /dev/null
@@ -1,34 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-interface IFoo {
-  void multipleInputs(in String in1, in String in2);
-  void multipleInputsAndOutputs(in String in1, in String in2, out hidl2aidl.test.IFooBigStruct out1, out hidl2aidl.test.IFooBigStruct out2);
-  void multipleOutputs(out hidl2aidl.test.IFooBigStruct out1, out hidl2aidl.test.IFooBigStruct out2);
-  String oneOutput();
-  String removedOutput();
-  void someBar(in String a, in String b);
-  oneway void someFoo(in byte a);
-  void useImportedStruct(in hidl2aidl.test.Outer outer);
-  hidl2aidl.test.IFooBigStruct useStruct();
-  void versionTest_(in String a);
-  boolean versionTest_two_(in String a);
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IFooBigStruct.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IFooBigStruct.aidl
deleted file mode 100644
index 81a292a..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/IFooBigStruct.aidl
+++ /dev/null
@@ -1,25 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable IFooBigStruct {
-  byte type;
-  byte value;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/NameCollision.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/NameCollision.aidl
deleted file mode 100644
index 3225990..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/NameCollision.aidl
+++ /dev/null
@@ -1,27 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable NameCollision {
-  String b;
-  byte a;
-  String c;
-  char d;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OnlyIn10.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OnlyIn10.aidl
deleted file mode 100644
index 0b4b35e..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OnlyIn10.aidl
+++ /dev/null
@@ -1,24 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable OnlyIn10 {
-  String str;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OnlyIn11.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OnlyIn11.aidl
deleted file mode 100644
index 2efa378..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OnlyIn11.aidl
+++ /dev/null
@@ -1,24 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable OnlyIn11 {
-  int str;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/Outer.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/Outer.aidl
deleted file mode 100644
index a3e3eb7..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/Outer.aidl
+++ /dev/null
@@ -1,25 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable Outer {
-  hidl2aidl.test.OuterInner inner;
-  int a;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OuterInner.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OuterInner.aidl
deleted file mode 100644
index e23b9df..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OuterInner.aidl
+++ /dev/null
@@ -1,24 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable OuterInner {
-  byte a;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OverrideMe.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OverrideMe.aidl
deleted file mode 100644
index 090a284..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/OverrideMe.aidl
+++ /dev/null
@@ -1,24 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable OverrideMe {
-  String a;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/SafeUnionBar.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/SafeUnionBar.aidl
deleted file mode 100644
index 34b9638..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/SafeUnionBar.aidl
+++ /dev/null
@@ -1,34 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-union SafeUnionBar {
-  boolean noInit;
-  byte a;
-  long b;
-  hidl2aidl.test.SafeUnionBarInnerStructBar innerStructBar;
-  hidl2aidl.test.OnlyIn11 c;
-  String d;
-  float e;
-  double f;
-  hidl2aidl.test.FooFlag g;
-  hidl2aidl.test.Value h;
-  char i;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/SafeUnionBarInnerStructBar.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/SafeUnionBarInnerStructBar.aidl
deleted file mode 100644
index 3fd291f..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/SafeUnionBarInnerStructBar.aidl
+++ /dev/null
@@ -1,25 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable SafeUnionBarInnerStructBar {
-  byte x;
-  byte z;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/UnionFoo.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/UnionFoo.aidl
deleted file mode 100644
index fdda556..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/UnionFoo.aidl
+++ /dev/null
@@ -1,26 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-union UnionFoo {
-  long a;
-  byte b;
-  hidl2aidl.test.OnlyIn11 c;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/Value.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/Value.aidl
deleted file mode 100644
index b0f1d4f..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/Value.aidl
+++ /dev/null
@@ -1,29 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@Backing(type="int") @VintfStability
-enum Value {
-  A = 3,
-  B = 7,
-  C = 8,
-  D = 9,
-  E = 27,
-  F = 28,
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/VectorFoo.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/VectorFoo.aidl
deleted file mode 100644
index bafe592..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/VectorFoo.aidl
+++ /dev/null
@@ -1,27 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test;
-@VintfStability
-parcelable VectorFoo {
-  byte[] a;
-  int[] b;
-  hidl2aidl.test.Value[] c;
-  String[] d;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/extension/ArrayFoo.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/extension/ArrayFoo.aidl
deleted file mode 100644
index 4fd7104..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/extension/ArrayFoo.aidl
+++ /dev/null
@@ -1,25 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test.extension;
-@VintfStability
-parcelable ArrayFoo {
-  hidl2aidl.test.ArrayFoo base;
-  byte[] e;
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/extension/FooFlag.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/extension/FooFlag.aidl
deleted file mode 100644
index 5ba6dde..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/extension/FooFlag.aidl
+++ /dev/null
@@ -1,24 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test.extension;
-@Backing(type="int") @VintfStability
-enum FooFlag {
-  FOURTH = 8,
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/extension/IFoo.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/extension/IFoo.aidl
deleted file mode 100644
index 2b525ba..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test/extension/IFoo.aidl
+++ /dev/null
@@ -1,24 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test.extension;
-@VintfStability
-interface IFoo {
-  int doCoolThings();
-}
diff --git a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test2/IFoo.aidl b/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test2/IFoo.aidl
deleted file mode 100644
index 7c3fffe..0000000
--- a/hidl2aidl/test/aidl_api/hidl2aidl_test_gen/1/hidl2aidl/test2/IFoo.aidl
+++ /dev/null
@@ -1,26 +0,0 @@
-// FIXME: license file, or use the -l option to generate the files with the header.
-///////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
-///////////////////////////////////////////////////////////////////////////////
-
-// This file is a snapshot of an AIDL file. Do not edit it manually. There are
-// two cases:
-// 1). this is a frozen version file - do not edit this in any case.
-// 2). this is a 'current' file. If you make a backwards compatible change to
-//     the interface (from the latest frozen version), the build system will
-//     prompt you to update this file with `m <name>-update-api`.
-//
-// You must not make a backward incompatible change to any AIDL file built
-// with the aidl_interface module type with versions property set. The module
-// type is used to build AIDL files in a way that they can be used across
-// independently updatable components of the system. If a device is shipped
-// with such a backward incompatible change, it has a high risk of breaking
-// later when a module using the interface is updated, e.g., Mainline modules.
-
-package hidl2aidl.test2;
-@VintfStability
-interface IFoo {
-  void shouldImportExternalTypes(in hidl2aidl.test.IFoo foo);
-  oneway void someFoo(in byte a);
-  void useImportedEnum(in hidl2aidl.test.Value value);
-}
