code: import java.nio.ByteBuffer;
  import MyGame.Example.Monster;
  import MyGame.Example.Stat;
  import com.google.flatbuffers.FlatBufferBuilder;
  
  class GameFactory {
    public static Monster createMonster(String monsterName, short nestedMonsterHp, short nestedMonsterMana) {
      FlatBufferBuilder builder = new FlatBufferBuilder();
  
      int name_offset = builder.createString(monsterName);
      Monster.startMonster(builder);
      Monster.addName(builder, name_offset);
      Monster.addHp(builder, nestedMonsterHp);
      Monster.addMana(builder, nestedMonsterMana);
      int monster_offset = Monster.endMonster(builder);
      Monster.finishMonsterBuffer(builder, monster_offset);
  
      ByteBuffer buffer = builder.dataBuffer();
      Monster monster = Monster.getRootAsMonster(buffer);
      return monster;
    }
  
    public static Monster createMonsterFromStat(Stat stat, int seqNo) {
      FlatBufferBuilder builder = new FlatBufferBuilder();
      int name_offset = builder.createString(stat.id() + " No." + seqNo);
      Monster.startMonster(builder);
      Monster.addName(builder, name_offset);
      int monster_offset = Monster.endMonster(builder);
      Monster.finishMonsterBuffer(builder, monster_offset);
      Monster monster = Monster.getRootAsMonster(builder.dataBuffer());
      return monster;
    }
  
    public static Stat createStat(String greeting, long val, int count) { 
      FlatBufferBuilder builder = new FlatBufferBuilder();
      int statOffset = Stat.createStat(builder, builder.createString(greeting), val, count);
      builder.finish(statOffset);
      Stat stat = Stat.getRootAsStat(builder.dataBuffer());
      return stat;
    }
  
  }
  