// automatically generated by the FlatBuffers compiler, do not modify

@SuppressWarnings("unused")
public final class Character {
  private Character() { }
  public static final byte NONE = 0;
  public static final byte MuLan = 1;
  public static final byte Rapunzel = 2;
  public static final byte Belle = 3;
  public static final byte BookFan = 4;
  public static final byte Other = 5;
  public static final byte Unused = 6;

  public static final String[] names = { "NONE", "MuLan", "Rapunzel", "Belle", "BookFan", "Other", "Unused", };

  public static String name(int e) { return names[e]; }
}

