# automatically generated by the FlatBuffers compiler, do not modify

# namespace: Example

class AnyAmbiguousAliases(object):
    NONE = 0
    M1 = 1
    M2 = 2
    M3 = 3

def AnyAmbiguousAliasesCreator(unionType, table):
    from flatbuffers.table import Table
    if not isinstance(table, Table):
        return None
    if unionType == AnyAmbiguousAliases.M1:
        import MyGame.Example.Monster
        return MyGame.Example.Monster.MonsterT.InitFromBuf(table.Bytes, table.Pos)
    if unionType == AnyAmbiguousAliases.M2:
        import MyGame.Example.Monster
        return MyGame.Example.Monster.MonsterT.InitFromBuf(table.Bytes, table.Pos)
    if unionType == AnyAmbiguousAliases.M3:
        import MyGame.Example.Monster
        return MyGame.Example.Monster.MonsterT.InitFromBuf(table.Bytes, table.Pos)
    return None
