diff --git a/tests/MyGame/Example/AnyAmbiguousAliasesUnion.java b/tests/MyGame/Example/AnyAmbiguousAliasesUnion.java
new file mode 100644
index 0000000..879d581
--- /dev/null
+++ b/tests/MyGame/Example/AnyAmbiguousAliasesUnion.java
@@ -0,0 +1,37 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+package MyGame.Example;
+
+import com.google.flatbuffers.FlatBufferBuilder;
+
+public class AnyAmbiguousAliasesUnion {
+  private byte type;
+  private Object value;
+
+  public byte getType() { return type; }
+
+  public void setType(byte type) { this.type = type; }
+
+  public Object getValue() { return value; }
+
+  public void setValue(Object value) { this.value = value; }
+
+  public AnyAmbiguousAliasesUnion() {
+    this.type = AnyAmbiguousAliases.NONE;
+    this.value = null;
+  }
+
+  public MyGame.Example.MonsterT asM1() { return (MyGame.Example.MonsterT) value; }
+  public MyGame.Example.MonsterT asM2() { return (MyGame.Example.MonsterT) value; }
+  public MyGame.Example.MonsterT asM3() { return (MyGame.Example.MonsterT) value; }
+
+  public static int pack(FlatBufferBuilder builder, AnyAmbiguousAliasesUnion _o) {
+    switch (_o.type) {
+      case AnyAmbiguousAliases.M1: return MyGame.Example.Monster.pack(builder, _o.asM1());
+      case AnyAmbiguousAliases.M2: return MyGame.Example.Monster.pack(builder, _o.asM2());
+      case AnyAmbiguousAliases.M3: return MyGame.Example.Monster.pack(builder, _o.asM3());
+      default: return 0;
+    }
+  }
+}
+
