/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
<<<<<<< Updated upstream
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
=======
 * 
 *     https://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
>>>>>>> Stashed changes
 * limitations under the License.
 */

package org.apache.jdo.tck.pc.fieldtypes;

import java.io.Serializable;

public class FieldsOfSimpleEnum {
  public int identifier;
  private SimpleEnum SimpleEnum0;
  private SimpleEnum SimpleEnum1;
  private SimpleEnum SimpleEnum2;
  private SimpleEnum SimpleEnum3;
  private SimpleEnum SimpleEnum4;
  private SimpleEnum SimpleEnum5;
  private SimpleEnum SimpleEnum6;
  private SimpleEnum SimpleEnum7;
  private static SimpleEnum SimpleEnum8;
  private transient SimpleEnum SimpleEnum9;
  private transient SimpleEnum SimpleEnum10;
  private transient SimpleEnum SimpleEnum11;
  private transient SimpleEnum SimpleEnum12;
  private transient SimpleEnum SimpleEnum13;
  private transient SimpleEnum SimpleEnum14;
  private final SimpleEnum SimpleEnum15 = SimpleEnum.AL;
  private volatile SimpleEnum SimpleEnum16;
  private volatile SimpleEnum SimpleEnum17;
  private volatile SimpleEnum SimpleEnum18;
  private volatile SimpleEnum SimpleEnum19;
  private volatile SimpleEnum SimpleEnum20;
  private volatile SimpleEnum SimpleEnum21;
  private volatile SimpleEnum SimpleEnum22;
  private volatile SimpleEnum SimpleEnum23;
  private static transient SimpleEnum SimpleEnum24;
  private static final SimpleEnum SimpleEnum25 = SimpleEnum.AL;
  private static volatile SimpleEnum SimpleEnum26;
  private final transient SimpleEnum SimpleEnum27 = SimpleEnum.AL;
  private transient volatile SimpleEnum SimpleEnum28;
  private transient volatile SimpleEnum SimpleEnum29;
  private transient volatile SimpleEnum SimpleEnum30;
  private transient volatile SimpleEnum SimpleEnum31;
  private transient volatile SimpleEnum SimpleEnum32;
  private transient volatile SimpleEnum SimpleEnum33;
  private static final transient SimpleEnum SimpleEnum34 = SimpleEnum.AL;
  private static transient volatile SimpleEnum SimpleEnum35;
  public SimpleEnum SimpleEnum36;
  public SimpleEnum SimpleEnum37;
  public SimpleEnum SimpleEnum38;
  public SimpleEnum SimpleEnum39;
  public SimpleEnum SimpleEnum40;
  public SimpleEnum SimpleEnum41;
  public SimpleEnum SimpleEnum42;
  public SimpleEnum SimpleEnum43;
  public static SimpleEnum SimpleEnum44;
  public transient SimpleEnum SimpleEnum45;
  public transient SimpleEnum SimpleEnum46;
  public transient SimpleEnum SimpleEnum47;
  public transient SimpleEnum SimpleEnum48;
  public transient SimpleEnum SimpleEnum49;
  public transient SimpleEnum SimpleEnum50;
  public final SimpleEnum SimpleEnum51 = SimpleEnum.AL;
  public volatile SimpleEnum SimpleEnum52;
  public volatile SimpleEnum SimpleEnum53;
  public volatile SimpleEnum SimpleEnum54;
  public volatile SimpleEnum SimpleEnum55;
  public volatile SimpleEnum SimpleEnum56;
  public volatile SimpleEnum SimpleEnum57;
  public volatile SimpleEnum SimpleEnum58;
  public volatile SimpleEnum SimpleEnum59;
  public static transient SimpleEnum SimpleEnum60;
  public static final SimpleEnum SimpleEnum61 = SimpleEnum.AL;
  public static volatile SimpleEnum SimpleEnum62;
  public final transient SimpleEnum SimpleEnum63 = SimpleEnum.AL;
  public transient volatile SimpleEnum SimpleEnum64;
  public transient volatile SimpleEnum SimpleEnum65;
  public transient volatile SimpleEnum SimpleEnum66;
  public transient volatile SimpleEnum SimpleEnum67;
  public transient volatile SimpleEnum SimpleEnum68;
  public transient volatile SimpleEnum SimpleEnum69;
  public static final transient SimpleEnum SimpleEnum70 = SimpleEnum.AL;
  public static transient volatile SimpleEnum SimpleEnum71;
  protected SimpleEnum SimpleEnum72;
  protected SimpleEnum SimpleEnum73;
  protected SimpleEnum SimpleEnum74;
  protected SimpleEnum SimpleEnum75;
  protected SimpleEnum SimpleEnum76;
  protected SimpleEnum SimpleEnum77;
  protected SimpleEnum SimpleEnum78;
  protected SimpleEnum SimpleEnum79;
  protected static SimpleEnum SimpleEnum80;
  protected transient SimpleEnum SimpleEnum81;
  protected transient SimpleEnum SimpleEnum82;
  protected transient SimpleEnum SimpleEnum83;
  protected transient SimpleEnum SimpleEnum84;
  protected transient SimpleEnum SimpleEnum85;
  protected transient SimpleEnum SimpleEnum86;
  protected final SimpleEnum SimpleEnum87 = SimpleEnum.AL;
  protected volatile SimpleEnum SimpleEnum88;
  protected volatile SimpleEnum SimpleEnum89;
  protected volatile SimpleEnum SimpleEnum90;
  protected volatile SimpleEnum SimpleEnum91;
  protected volatile SimpleEnum SimpleEnum92;
  protected volatile SimpleEnum SimpleEnum93;
  protected volatile SimpleEnum SimpleEnum94;
  protected volatile SimpleEnum SimpleEnum95;
  protected static transient SimpleEnum SimpleEnum96;
  protected static final SimpleEnum SimpleEnum97 = SimpleEnum.AL;
  protected static volatile SimpleEnum SimpleEnum98;
  protected final transient SimpleEnum SimpleEnum99 = SimpleEnum.AL;
  protected transient volatile SimpleEnum SimpleEnum100;
  protected transient volatile SimpleEnum SimpleEnum101;
  protected transient volatile SimpleEnum SimpleEnum102;
  protected transient volatile SimpleEnum SimpleEnum103;
  protected transient volatile SimpleEnum SimpleEnum104;
  protected transient volatile SimpleEnum SimpleEnum105;
  protected static final transient SimpleEnum SimpleEnum106 = SimpleEnum.AL;
  protected static transient volatile SimpleEnum SimpleEnum107;
  SimpleEnum SimpleEnum108;
  SimpleEnum SimpleEnum109;
  SimpleEnum SimpleEnum110;
  SimpleEnum SimpleEnum111;
  SimpleEnum SimpleEnum112;
  SimpleEnum SimpleEnum113;
  SimpleEnum SimpleEnum114;
  SimpleEnum SimpleEnum115;
  static SimpleEnum SimpleEnum116;
  transient SimpleEnum SimpleEnum117;
  transient SimpleEnum SimpleEnum118;
  transient SimpleEnum SimpleEnum119;
  transient SimpleEnum SimpleEnum120;
  transient SimpleEnum SimpleEnum121;
  transient SimpleEnum SimpleEnum122;
  final SimpleEnum SimpleEnum123 = SimpleEnum.AL;
  volatile SimpleEnum SimpleEnum124;
  volatile SimpleEnum SimpleEnum125;
  volatile SimpleEnum SimpleEnum126;
  volatile SimpleEnum SimpleEnum127;
  volatile SimpleEnum SimpleEnum128;
  volatile SimpleEnum SimpleEnum129;
  volatile SimpleEnum SimpleEnum130;
  volatile SimpleEnum SimpleEnum131;
  static transient SimpleEnum SimpleEnum132;
  static final SimpleEnum SimpleEnum133 = SimpleEnum.AL;
  static volatile SimpleEnum SimpleEnum134;
  final transient SimpleEnum SimpleEnum135 = SimpleEnum.AL;
  transient volatile SimpleEnum SimpleEnum136;
  transient volatile SimpleEnum SimpleEnum137;
  transient volatile SimpleEnum SimpleEnum138;
  transient volatile SimpleEnum SimpleEnum139;
  transient volatile SimpleEnum SimpleEnum140;
  transient volatile SimpleEnum SimpleEnum141;
  static final transient SimpleEnum SimpleEnum142 = SimpleEnum.AL;
  static transient volatile SimpleEnum SimpleEnum143;

  public static final boolean[] isPersistent = {
    true, true, true, false, true, true, true, false, false, false,
    false, true, true, true, false, false, true, true, true, false,
    true, true, true, false, false, false, false, false, false, false,
    true, true, true, false, false, false, true, true, true, false,
    true, true, true, false, false, false, false, true, true, true,
    false, false, true, true, true, false, true, true, true, false,
    false, false, false, false, false, false, true, true, true, false,
    false, false, true, true, true, false, true, true, true, false,
    false, false, false, true, true, true, false, false, true, true,
    true, false, true, true, true, false, false, false, false, false,
    false, false, true, true, true, false, false, false, true, true,
    true, false, true, true, true, false, false, false, false, true,
    true, true, false, false, true, true, true, false, true, true,
    true, false, false, false, false, false, false, false, true, true,
    true, false, false, false
  };

  public static final boolean[] isStatic = {
    false, false, false, false, false, false, false, false, true, false,
    false, false, false, false, false, false, false, false, false, false,
    false, false, false, false, true, true, true, false, false, false,
    false, false, false, false, true, true, false, false, false, false,
    false, false, false, false, true, false, false, false, false, false,
    false, false, false, false, false, false, false, false, false, false,
    true, true, true, false, false, false, false, false, false, false,
    true, true, false, false, false, false, false, false, false, false,
    true, false, false, false, false, false, false, false, false, false,
    false, false, false, false, false, false, true, true, true, false,
    false, false, false, false, false, false, true, true, false, false,
    false, false, false, false, false, false, true, false, false, false,
    false, false, false, false, false, false, false, false, false, false,
    false, false, true, true, true, false, false, false, false, false,
    false, false, true, true
  };

  public static final boolean[] isFinal = {
    false, false, false, false, false, false, false, false, false, false,
    false, false, false, false, false, true, false, false, false, false,
    false, false, false, false, false, true, false, true, false, false,
    false, false, false, false, true, false, false, false, false, false,
    false, false, false, false, false, false, false, false, false, false,
    false, true, false, false, false, false, false, false, false, false,
    false, true, false, true, false, false, false, false, false, false,
    true, false, false, false, false, false, false, false, false, false,
    false, false, false, false, false, false, false, true, false, false,
    false, false, false, false, false, false, false, true, false, true,
    false, false, false, false, false, false, true, false, false, false,
    false, false, false, false, false, false, false, false, false, false,
    false, false, false, true, false, false, false, false, false, false,
    false, false, false, true, false, true, false, false, false, false,
    false, false, true, false
  };

  public static final String[] fieldSpecs = {
    "private SimpleEnum SimpleEnum0",
    "embedded= true   private SimpleEnum SimpleEnum1",
    "embedded= false   private SimpleEnum SimpleEnum2",
    "persistence-modifier= none    private SimpleEnum SimpleEnum3",
    "persistence-modifier= persistent    private SimpleEnum SimpleEnum4",
    "persistence-modifier= persistent  embedded= true   private SimpleEnum SimpleEnum5",
    "persistence-modifier= persistent  embedded= false   private SimpleEnum SimpleEnum6",
    "persistence-modifier= transactional    private SimpleEnum SimpleEnum7",
    "private static SimpleEnum SimpleEnum8",
    "private transient SimpleEnum SimpleEnum9",
    "persistence-modifier= none    private transient SimpleEnum SimpleEnum10",
    "persistence-modifier= persistent    private transient SimpleEnum SimpleEnum11",
    "persistence-modifier= persistent  embedded= true   private transient SimpleEnum SimpleEnum12",
    "persistence-modifier= persistent  embedded= false   private transient SimpleEnum SimpleEnum13",
    "persistence-modifier= transactional    private transient SimpleEnum SimpleEnum14",
    "private final SimpleEnum SimpleEnum15",
    "private volatile SimpleEnum SimpleEnum16",
    "embedded= true   private volatile SimpleEnum SimpleEnum17",
    "embedded= false   private volatile SimpleEnum SimpleEnum18",
    "persistence-modifier= none    private volatile SimpleEnum SimpleEnum19",
    "persistence-modifier= persistent    private volatile SimpleEnum SimpleEnum20",
    "persistence-modifier= persistent  embedded= true   private volatile SimpleEnum SimpleEnum21",
    "persistence-modifier= persistent  embedded= false   private volatile SimpleEnum SimpleEnum22",
    "persistence-modifier= transactional    private volatile SimpleEnum SimpleEnum23",
    "private static transient SimpleEnum SimpleEnum24",
    "private static final SimpleEnum SimpleEnum25",
    "private static volatile SimpleEnum SimpleEnum26",
    "private transient final SimpleEnum SimpleEnum27",
    "private transient volatile SimpleEnum SimpleEnum28",
    "persistence-modifier= none    private transient volatile SimpleEnum SimpleEnum29",
    "persistence-modifier= persistent    private transient volatile SimpleEnum SimpleEnum30",
    "persistence-modifier= persistent  embedded= true   private transient volatile SimpleEnum SimpleEnum31",
    "persistence-modifier= persistent  embedded= false   private transient volatile SimpleEnum SimpleEnum32",
    "persistence-modifier= transactional    private transient volatile SimpleEnum SimpleEnum33",
    "private static transient final SimpleEnum SimpleEnum34",
    "private static transient volatile SimpleEnum SimpleEnum35",
    "public SimpleEnum SimpleEnum36",
    "embedded= true   public SimpleEnum SimpleEnum37",
    "embedded= false   public SimpleEnum SimpleEnum38",
    "persistence-modifier= none    public SimpleEnum SimpleEnum39",
    "persistence-modifier= persistent    public SimpleEnum SimpleEnum40",
    "persistence-modifier= persistent  embedded= true   public SimpleEnum SimpleEnum41",
    "persistence-modifier= persistent  embedded= false   public SimpleEnum SimpleEnum42",
    "persistence-modifier= transactional    public SimpleEnum SimpleEnum43",
    "public static SimpleEnum SimpleEnum44",
    "public transient SimpleEnum SimpleEnum45",
    "persistence-modifier= none    public transient SimpleEnum SimpleEnum46",
    "persistence-modifier= persistent    public transient SimpleEnum SimpleEnum47",
    "persistence-modifier= persistent  embedded= true   public transient SimpleEnum SimpleEnum48",
    "persistence-modifier= persistent  embedded= false   public transient SimpleEnum SimpleEnum49",
    "persistence-modifier= transactional    public transient SimpleEnum SimpleEnum50",
    "public final SimpleEnum SimpleEnum51",
    "public volatile SimpleEnum SimpleEnum52",
    "embedded= true   public volatile SimpleEnum SimpleEnum53",
    "embedded= false   public volatile SimpleEnum SimpleEnum54",
    "persistence-modifier= none    public volatile SimpleEnum SimpleEnum55",
    "persistence-modifier= persistent    public volatile SimpleEnum SimpleEnum56",
    "persistence-modifier= persistent  embedded= true   public volatile SimpleEnum SimpleEnum57",
    "persistence-modifier= persistent  embedded= false   public volatile SimpleEnum SimpleEnum58",
    "persistence-modifier= transactional    public volatile SimpleEnum SimpleEnum59",
    "public static transient SimpleEnum SimpleEnum60",
    "public static final SimpleEnum SimpleEnum61",
    "public static volatile SimpleEnum SimpleEnum62",
    "public transient final SimpleEnum SimpleEnum63",
    "public transient volatile SimpleEnum SimpleEnum64",
    "persistence-modifier= none    public transient volatile SimpleEnum SimpleEnum65",
    "persistence-modifier= persistent    public transient volatile SimpleEnum SimpleEnum66",
    "persistence-modifier= persistent  embedded= true   public transient volatile SimpleEnum SimpleEnum67",
    "persistence-modifier= persistent  embedded= false   public transient volatile SimpleEnum SimpleEnum68",
    "persistence-modifier= transactional    public transient volatile SimpleEnum SimpleEnum69",
    "public static transient final SimpleEnum SimpleEnum70",
    "public static transient volatile SimpleEnum SimpleEnum71",
    "protected SimpleEnum SimpleEnum72",
    "embedded= true   protected SimpleEnum SimpleEnum73",
    "embedded= false   protected SimpleEnum SimpleEnum74",
    "persistence-modifier= none    protected SimpleEnum SimpleEnum75",
    "persistence-modifier= persistent    protected SimpleEnum SimpleEnum76",
    "persistence-modifier= persistent  embedded= true   protected SimpleEnum SimpleEnum77",
    "persistence-modifier= persistent  embedded= false   protected SimpleEnum SimpleEnum78",
    "persistence-modifier= transactional    protected SimpleEnum SimpleEnum79",
    "protected static SimpleEnum SimpleEnum80",
    "protected transient SimpleEnum SimpleEnum81",
    "persistence-modifier= none    protected transient SimpleEnum SimpleEnum82",
    "persistence-modifier= persistent    protected transient SimpleEnum SimpleEnum83",
    "persistence-modifier= persistent  embedded= true   protected transient SimpleEnum SimpleEnum84",
    "persistence-modifier= persistent  embedded= false   protected transient SimpleEnum SimpleEnum85",
    "persistence-modifier= transactional    protected transient SimpleEnum SimpleEnum86",
    "protected final SimpleEnum SimpleEnum87",
    "protected volatile SimpleEnum SimpleEnum88",
    "embedded= true   protected volatile SimpleEnum SimpleEnum89",
    "embedded= false   protected volatile SimpleEnum SimpleEnum90",
    "persistence-modifier= none    protected volatile SimpleEnum SimpleEnum91",
    "persistence-modifier= persistent    protected volatile SimpleEnum SimpleEnum92",
    "persistence-modifier= persistent  embedded= true   protected volatile SimpleEnum SimpleEnum93",
    "persistence-modifier= persistent  embedded= false   protected volatile SimpleEnum SimpleEnum94",
    "persistence-modifier= transactional    protected volatile SimpleEnum SimpleEnum95",
    "protected static transient SimpleEnum SimpleEnum96",
    "protected static final SimpleEnum SimpleEnum97",
    "protected static volatile SimpleEnum SimpleEnum98",
    "protected transient final SimpleEnum SimpleEnum99",
    "protected transient volatile SimpleEnum SimpleEnum100",
    "persistence-modifier= none    protected transient volatile SimpleEnum SimpleEnum101",
    "persistence-modifier= persistent    protected transient volatile SimpleEnum SimpleEnum102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile SimpleEnum SimpleEnum103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile SimpleEnum SimpleEnum104",
    "persistence-modifier= transactional    protected transient volatile SimpleEnum SimpleEnum105",
    "protected static transient final SimpleEnum SimpleEnum106",
    "protected static transient volatile SimpleEnum SimpleEnum107",
    "SimpleEnum SimpleEnum108",
    "embedded= true   SimpleEnum SimpleEnum109",
    "embedded= false   SimpleEnum SimpleEnum110",
    "persistence-modifier= none    SimpleEnum SimpleEnum111",
    "persistence-modifier= persistent    SimpleEnum SimpleEnum112",
    "persistence-modifier= persistent  embedded= true   SimpleEnum SimpleEnum113",
    "persistence-modifier= persistent  embedded= false   SimpleEnum SimpleEnum114",
    "persistence-modifier= transactional    SimpleEnum SimpleEnum115",
    "static SimpleEnum SimpleEnum116",
    "transient SimpleEnum SimpleEnum117",
    "persistence-modifier= none    transient SimpleEnum SimpleEnum118",
    "persistence-modifier= persistent    transient SimpleEnum SimpleEnum119",
    "persistence-modifier= persistent  embedded= true   transient SimpleEnum SimpleEnum120",
    "persistence-modifier= persistent  embedded= false   transient SimpleEnum SimpleEnum121",
    "persistence-modifier= transactional    transient SimpleEnum SimpleEnum122",
    "final SimpleEnum SimpleEnum123",
    "volatile SimpleEnum SimpleEnum124",
    "embedded= true   volatile SimpleEnum SimpleEnum125",
    "embedded= false   volatile SimpleEnum SimpleEnum126",
    "persistence-modifier= none    volatile SimpleEnum SimpleEnum127",
    "persistence-modifier= persistent    volatile SimpleEnum SimpleEnum128",
    "persistence-modifier= persistent  embedded= true   volatile SimpleEnum SimpleEnum129",
    "persistence-modifier= persistent  embedded= false   volatile SimpleEnum SimpleEnum130",
    "persistence-modifier= transactional    volatile SimpleEnum SimpleEnum131",
    "static transient SimpleEnum SimpleEnum132",
    "static final SimpleEnum SimpleEnum133",
    "static volatile SimpleEnum SimpleEnum134",
    "transient final SimpleEnum SimpleEnum135",
    "transient volatile SimpleEnum SimpleEnum136",
    "persistence-modifier= none    transient volatile SimpleEnum SimpleEnum137",
    "persistence-modifier= persistent    transient volatile SimpleEnum SimpleEnum138",
    "persistence-modifier= persistent  embedded= true   transient volatile SimpleEnum SimpleEnum139",
    "persistence-modifier= persistent  embedded= false   transient volatile SimpleEnum SimpleEnum140",
    "persistence-modifier= transactional    transient volatile SimpleEnum SimpleEnum141",
    "static transient final SimpleEnum SimpleEnum142",
    "static transient volatile SimpleEnum SimpleEnum143"
  };

  public int getLength() {
    return fieldSpecs.length;
  }

  public SimpleEnum get(int index) {
    switch (index) {
      case (0):
        return SimpleEnum0;
      case (1):
        return SimpleEnum1;
      case (2):
        return SimpleEnum2;
      case (3):
        return SimpleEnum3;
      case (4):
        return SimpleEnum4;
      case (5):
        return SimpleEnum5;
      case (6):
        return SimpleEnum6;
      case (7):
        return SimpleEnum7;
      case (8):
        return SimpleEnum8;
      case (9):
        return SimpleEnum9;
      case (10):
        return SimpleEnum10;
      case (11):
        return SimpleEnum11;
      case (12):
        return SimpleEnum12;
      case (13):
        return SimpleEnum13;
      case (14):
        return SimpleEnum14;
      case (15):
        return SimpleEnum15;
      case (16):
        return SimpleEnum16;
      case (17):
        return SimpleEnum17;
      case (18):
        return SimpleEnum18;
      case (19):
        return SimpleEnum19;
      case (20):
        return SimpleEnum20;
      case (21):
        return SimpleEnum21;
      case (22):
        return SimpleEnum22;
      case (23):
        return SimpleEnum23;
      case (24):
        return SimpleEnum24;
      case (25):
        return SimpleEnum25;
      case (26):
        return SimpleEnum26;
      case (27):
        return SimpleEnum27;
      case (28):
        return SimpleEnum28;
      case (29):
        return SimpleEnum29;
      case (30):
        return SimpleEnum30;
      case (31):
        return SimpleEnum31;
      case (32):
        return SimpleEnum32;
      case (33):
        return SimpleEnum33;
      case (34):
        return SimpleEnum34;
      case (35):
        return SimpleEnum35;
      case (36):
        return SimpleEnum36;
      case (37):
        return SimpleEnum37;
      case (38):
        return SimpleEnum38;
      case (39):
        return SimpleEnum39;
      case (40):
        return SimpleEnum40;
      case (41):
        return SimpleEnum41;
      case (42):
        return SimpleEnum42;
      case (43):
        return SimpleEnum43;
      case (44):
        return SimpleEnum44;
      case (45):
        return SimpleEnum45;
      case (46):
        return SimpleEnum46;
      case (47):
        return SimpleEnum47;
      case (48):
        return SimpleEnum48;
      case (49):
        return SimpleEnum49;
      case (50):
        return SimpleEnum50;
      case (51):
        return SimpleEnum51;
      case (52):
        return SimpleEnum52;
      case (53):
        return SimpleEnum53;
      case (54):
        return SimpleEnum54;
      case (55):
        return SimpleEnum55;
      case (56):
        return SimpleEnum56;
      case (57):
        return SimpleEnum57;
      case (58):
        return SimpleEnum58;
      case (59):
        return SimpleEnum59;
      case (60):
        return SimpleEnum60;
      case (61):
        return SimpleEnum61;
      case (62):
        return SimpleEnum62;
      case (63):
        return SimpleEnum63;
      case (64):
        return SimpleEnum64;
      case (65):
        return SimpleEnum65;
      case (66):
        return SimpleEnum66;
      case (67):
        return SimpleEnum67;
      case (68):
        return SimpleEnum68;
      case (69):
        return SimpleEnum69;
      case (70):
        return SimpleEnum70;
      case (71):
        return SimpleEnum71;
      case (72):
        return SimpleEnum72;
      case (73):
        return SimpleEnum73;
      case (74):
        return SimpleEnum74;
      case (75):
        return SimpleEnum75;
      case (76):
        return SimpleEnum76;
      case (77):
        return SimpleEnum77;
      case (78):
        return SimpleEnum78;
      case (79):
        return SimpleEnum79;
      case (80):
        return SimpleEnum80;
      case (81):
        return SimpleEnum81;
      case (82):
        return SimpleEnum82;
      case (83):
        return SimpleEnum83;
      case (84):
        return SimpleEnum84;
      case (85):
        return SimpleEnum85;
      case (86):
        return SimpleEnum86;
      case (87):
        return SimpleEnum87;
      case (88):
        return SimpleEnum88;
      case (89):
        return SimpleEnum89;
      case (90):
        return SimpleEnum90;
      case (91):
        return SimpleEnum91;
      case (92):
        return SimpleEnum92;
      case (93):
        return SimpleEnum93;
      case (94):
        return SimpleEnum94;
      case (95):
        return SimpleEnum95;
      case (96):
        return SimpleEnum96;
      case (97):
        return SimpleEnum97;
      case (98):
        return SimpleEnum98;
      case (99):
        return SimpleEnum99;
      case (100):
        return SimpleEnum100;
      case (101):
        return SimpleEnum101;
      case (102):
        return SimpleEnum102;
      case (103):
        return SimpleEnum103;
      case (104):
        return SimpleEnum104;
      case (105):
        return SimpleEnum105;
      case (106):
        return SimpleEnum106;
      case (107):
        return SimpleEnum107;
      case (108):
        return SimpleEnum108;
      case (109):
        return SimpleEnum109;
      case (110):
        return SimpleEnum110;
      case (111):
        return SimpleEnum111;
      case (112):
        return SimpleEnum112;
      case (113):
        return SimpleEnum113;
      case (114):
        return SimpleEnum114;
      case (115):
        return SimpleEnum115;
      case (116):
        return SimpleEnum116;
      case (117):
        return SimpleEnum117;
      case (118):
        return SimpleEnum118;
      case (119):
        return SimpleEnum119;
      case (120):
        return SimpleEnum120;
      case (121):
        return SimpleEnum121;
      case (122):
        return SimpleEnum122;
      case (123):
        return SimpleEnum123;
      case (124):
        return SimpleEnum124;
      case (125):
        return SimpleEnum125;
      case (126):
        return SimpleEnum126;
      case (127):
        return SimpleEnum127;
      case (128):
        return SimpleEnum128;
      case (129):
        return SimpleEnum129;
      case (130):
        return SimpleEnum130;
      case (131):
        return SimpleEnum131;
      case (132):
        return SimpleEnum132;
      case (133):
        return SimpleEnum133;
      case (134):
        return SimpleEnum134;
      case (135):
        return SimpleEnum135;
      case (136):
        return SimpleEnum136;
      case (137):
        return SimpleEnum137;
      case (138):
        return SimpleEnum138;
      case (139):
        return SimpleEnum139;
      case (140):
        return SimpleEnum140;
      case (141):
        return SimpleEnum141;
      case (142):
        return SimpleEnum142;
      case (143):
        return SimpleEnum143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, SimpleEnum value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        SimpleEnum0 = value;
        break;
      case (1):
        SimpleEnum1 = value;
        break;
      case (2):
        SimpleEnum2 = value;
        break;
      case (3):
        SimpleEnum3 = value;
        break;
      case (4):
        SimpleEnum4 = value;
        break;
      case (5):
        SimpleEnum5 = value;
        break;
      case (6):
        SimpleEnum6 = value;
        break;
      case (7):
        SimpleEnum7 = value;
        break;
      case (8):
        SimpleEnum8 = value;
        break;
      case (9):
        SimpleEnum9 = value;
        break;
      case (10):
        SimpleEnum10 = value;
        break;
      case (11):
        SimpleEnum11 = value;
        break;
      case (12):
        SimpleEnum12 = value;
        break;
      case (13):
        SimpleEnum13 = value;
        break;
      case (14):
        SimpleEnum14 = value;
        break;
      case (16):
        SimpleEnum16 = value;
        break;
      case (17):
        SimpleEnum17 = value;
        break;
      case (18):
        SimpleEnum18 = value;
        break;
      case (19):
        SimpleEnum19 = value;
        break;
      case (20):
        SimpleEnum20 = value;
        break;
      case (21):
        SimpleEnum21 = value;
        break;
      case (22):
        SimpleEnum22 = value;
        break;
      case (23):
        SimpleEnum23 = value;
        break;
      case (24):
        SimpleEnum24 = value;
        break;
      case (26):
        SimpleEnum26 = value;
        break;
      case (28):
        SimpleEnum28 = value;
        break;
      case (29):
        SimpleEnum29 = value;
        break;
      case (30):
        SimpleEnum30 = value;
        break;
      case (31):
        SimpleEnum31 = value;
        break;
      case (32):
        SimpleEnum32 = value;
        break;
      case (33):
        SimpleEnum33 = value;
        break;
      case (35):
        SimpleEnum35 = value;
        break;
      case (36):
        SimpleEnum36 = value;
        break;
      case (37):
        SimpleEnum37 = value;
        break;
      case (38):
        SimpleEnum38 = value;
        break;
      case (39):
        SimpleEnum39 = value;
        break;
      case (40):
        SimpleEnum40 = value;
        break;
      case (41):
        SimpleEnum41 = value;
        break;
      case (42):
        SimpleEnum42 = value;
        break;
      case (43):
        SimpleEnum43 = value;
        break;
      case (44):
        SimpleEnum44 = value;
        break;
      case (45):
        SimpleEnum45 = value;
        break;
      case (46):
        SimpleEnum46 = value;
        break;
      case (47):
        SimpleEnum47 = value;
        break;
      case (48):
        SimpleEnum48 = value;
        break;
      case (49):
        SimpleEnum49 = value;
        break;
      case (50):
        SimpleEnum50 = value;
        break;
      case (52):
        SimpleEnum52 = value;
        break;
      case (53):
        SimpleEnum53 = value;
        break;
      case (54):
        SimpleEnum54 = value;
        break;
      case (55):
        SimpleEnum55 = value;
        break;
      case (56):
        SimpleEnum56 = value;
        break;
      case (57):
        SimpleEnum57 = value;
        break;
      case (58):
        SimpleEnum58 = value;
        break;
      case (59):
        SimpleEnum59 = value;
        break;
      case (60):
        SimpleEnum60 = value;
        break;
      case (62):
        SimpleEnum62 = value;
        break;
      case (64):
        SimpleEnum64 = value;
        break;
      case (65):
        SimpleEnum65 = value;
        break;
      case (66):
        SimpleEnum66 = value;
        break;
      case (67):
        SimpleEnum67 = value;
        break;
      case (68):
        SimpleEnum68 = value;
        break;
      case (69):
        SimpleEnum69 = value;
        break;
      case (71):
        SimpleEnum71 = value;
        break;
      case (72):
        SimpleEnum72 = value;
        break;
      case (73):
        SimpleEnum73 = value;
        break;
      case (74):
        SimpleEnum74 = value;
        break;
      case (75):
        SimpleEnum75 = value;
        break;
      case (76):
        SimpleEnum76 = value;
        break;
      case (77):
        SimpleEnum77 = value;
        break;
      case (78):
        SimpleEnum78 = value;
        break;
      case (79):
        SimpleEnum79 = value;
        break;
      case (80):
        SimpleEnum80 = value;
        break;
      case (81):
        SimpleEnum81 = value;
        break;
      case (82):
        SimpleEnum82 = value;
        break;
      case (83):
        SimpleEnum83 = value;
        break;
      case (84):
        SimpleEnum84 = value;
        break;
      case (85):
        SimpleEnum85 = value;
        break;
      case (86):
        SimpleEnum86 = value;
        break;
      case (88):
        SimpleEnum88 = value;
        break;
      case (89):
        SimpleEnum89 = value;
        break;
      case (90):
        SimpleEnum90 = value;
        break;
      case (91):
        SimpleEnum91 = value;
        break;
      case (92):
        SimpleEnum92 = value;
        break;
      case (93):
        SimpleEnum93 = value;
        break;
      case (94):
        SimpleEnum94 = value;
        break;
      case (95):
        SimpleEnum95 = value;
        break;
      case (96):
        SimpleEnum96 = value;
        break;
      case (98):
        SimpleEnum98 = value;
        break;
      case (100):
        SimpleEnum100 = value;
        break;
      case (101):
        SimpleEnum101 = value;
        break;
      case (102):
        SimpleEnum102 = value;
        break;
      case (103):
        SimpleEnum103 = value;
        break;
      case (104):
        SimpleEnum104 = value;
        break;
      case (105):
        SimpleEnum105 = value;
        break;
      case (107):
        SimpleEnum107 = value;
        break;
      case (108):
        SimpleEnum108 = value;
        break;
      case (109):
        SimpleEnum109 = value;
        break;
      case (110):
        SimpleEnum110 = value;
        break;
      case (111):
        SimpleEnum111 = value;
        break;
      case (112):
        SimpleEnum112 = value;
        break;
      case (113):
        SimpleEnum113 = value;
        break;
      case (114):
        SimpleEnum114 = value;
        break;
      case (115):
        SimpleEnum115 = value;
        break;
      case (116):
        SimpleEnum116 = value;
        break;
      case (117):
        SimpleEnum117 = value;
        break;
      case (118):
        SimpleEnum118 = value;
        break;
      case (119):
        SimpleEnum119 = value;
        break;
      case (120):
        SimpleEnum120 = value;
        break;
      case (121):
        SimpleEnum121 = value;
        break;
      case (122):
        SimpleEnum122 = value;
        break;
      case (124):
        SimpleEnum124 = value;
        break;
      case (125):
        SimpleEnum125 = value;
        break;
      case (126):
        SimpleEnum126 = value;
        break;
      case (127):
        SimpleEnum127 = value;
        break;
      case (128):
        SimpleEnum128 = value;
        break;
      case (129):
        SimpleEnum129 = value;
        break;
      case (130):
        SimpleEnum130 = value;
        break;
      case (131):
        SimpleEnum131 = value;
        break;
      case (132):
        SimpleEnum132 = value;
        break;
      case (134):
        SimpleEnum134 = value;
        break;
      case (136):
        SimpleEnum136 = value;
        break;
      case (137):
        SimpleEnum137 = value;
        break;
      case (138):
        SimpleEnum138 = value;
        break;
      case (139):
        SimpleEnum139 = value;
        break;
      case (140):
        SimpleEnum140 = value;
        break;
      case (141):
        SimpleEnum141 = value;
        break;
      case (143):
        SimpleEnum143 = value;
        break;
      default:
        throw new IndexOutOfBoundsException();
    }
    return true;
  }

  public static class Oid implements Serializable {

    private static final long serialVersionUID = 1L;

    public int identifier;

    public Oid() {}

    public Oid(String s) {
      identifier = Integer.parseInt(justTheId(s));
    }

    public String toString() {
      return this.getClass().getName() + ": " + identifier;
    }

    public int hashCode() {
      return identifier;
    }

    public boolean equals(Object other) {
      if (other != null && (other instanceof Oid)) {
        Oid k = (Oid) other;
        return k.identifier == this.identifier;
      }
      return false;
    }

    protected static String justTheId(String str) {
      return str.substring(str.indexOf(':') + 1);
    }
  }
}
