/*
 * 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 FieldsOfObject {
  public int identifier;
  private Object Object0;
  private Object Object1;
  private Object Object2;
  private Object Object3;
  private Object Object4;
  private Object Object5;
  private Object Object6;
  private Object Object7;
  private static Object Object8;
  private transient Object Object9;
  private transient Object Object10;
  private transient Object Object11;
  private transient Object Object12;
  private transient Object Object13;
  private transient Object Object14;
  private final Object Object15 = new Object();
  private volatile Object Object16;
  private volatile Object Object17;
  private volatile Object Object18;
  private volatile Object Object19;
  private volatile Object Object20;
  private volatile Object Object21;
  private volatile Object Object22;
  private volatile Object Object23;
  private static transient Object Object24;
  private static final Object Object25 = new Object();
  private static volatile Object Object26;
  private final transient Object Object27 = new Object();
  private transient volatile Object Object28;
  private transient volatile Object Object29;
  private transient volatile Object Object30;
  private transient volatile Object Object31;
  private transient volatile Object Object32;
  private transient volatile Object Object33;
  private static final transient Object Object34 = new Object();
  private static transient volatile Object Object35;
  public Object Object36;
  public Object Object37;
  public Object Object38;
  public Object Object39;
  public Object Object40;
  public Object Object41;
  public Object Object42;
  public Object Object43;
  public static Object Object44;
  public transient Object Object45;
  public transient Object Object46;
  public transient Object Object47;
  public transient Object Object48;
  public transient Object Object49;
  public transient Object Object50;
  public final Object Object51 = new Object();
  public volatile Object Object52;
  public volatile Object Object53;
  public volatile Object Object54;
  public volatile Object Object55;
  public volatile Object Object56;
  public volatile Object Object57;
  public volatile Object Object58;
  public volatile Object Object59;
  public static transient Object Object60;
  public static final Object Object61 = new Object();
  public static volatile Object Object62;
  public final transient Object Object63 = new Object();
  public transient volatile Object Object64;
  public transient volatile Object Object65;
  public transient volatile Object Object66;
  public transient volatile Object Object67;
  public transient volatile Object Object68;
  public transient volatile Object Object69;
  public static final transient Object Object70 = new Object();
  public static transient volatile Object Object71;
  protected Object Object72;
  protected Object Object73;
  protected Object Object74;
  protected Object Object75;
  protected Object Object76;
  protected Object Object77;
  protected Object Object78;
  protected Object Object79;
  protected static Object Object80;
  protected transient Object Object81;
  protected transient Object Object82;
  protected transient Object Object83;
  protected transient Object Object84;
  protected transient Object Object85;
  protected transient Object Object86;
  protected final Object Object87 = new Object();
  protected volatile Object Object88;
  protected volatile Object Object89;
  protected volatile Object Object90;
  protected volatile Object Object91;
  protected volatile Object Object92;
  protected volatile Object Object93;
  protected volatile Object Object94;
  protected volatile Object Object95;
  protected static transient Object Object96;
  protected static final Object Object97 = new Object();
  protected static volatile Object Object98;
  protected final transient Object Object99 = new Object();
  protected transient volatile Object Object100;
  protected transient volatile Object Object101;
  protected transient volatile Object Object102;
  protected transient volatile Object Object103;
  protected transient volatile Object Object104;
  protected transient volatile Object Object105;
  protected static final transient Object Object106 = new Object();
  protected static transient volatile Object Object107;
  Object Object108;
  Object Object109;
  Object Object110;
  Object Object111;
  Object Object112;
  Object Object113;
  Object Object114;
  Object Object115;
  static Object Object116;
  transient Object Object117;
  transient Object Object118;
  transient Object Object119;
  transient Object Object120;
  transient Object Object121;
  transient Object Object122;
  final Object Object123 = new Object();
  volatile Object Object124;
  volatile Object Object125;
  volatile Object Object126;
  volatile Object Object127;
  volatile Object Object128;
  volatile Object Object129;
  volatile Object Object130;
  volatile Object Object131;
  static transient Object Object132;
  static final Object Object133 = new Object();
  static volatile Object Object134;
  final transient Object Object135 = new Object();
  transient volatile Object Object136;
  transient volatile Object Object137;
  transient volatile Object Object138;
  transient volatile Object Object139;
  transient volatile Object Object140;
  transient volatile Object Object141;
  static final transient Object Object142 = new Object();
  static transient volatile Object Object143;

  public static final boolean[] isPersistent = {
    false, true, true, false, true, true, true, false, false, false,
    false, true, true, true, false, false, false, true, true, false,
    true, true, true, false, false, false, false, false, false, false,
    true, true, true, false, false, false, false, true, true, false,
    true, true, true, false, false, false, false, true, true, true,
    false, false, false, true, true, false, true, true, true, false,
    false, false, false, false, false, false, true, true, true, false,
    false, false, false, true, true, false, true, true, true, false,
    false, false, false, true, true, true, false, false, false, true,
    true, false, true, true, true, false, false, false, false, false,
    false, false, true, true, true, false, false, false, false, true,
    true, false, true, true, true, false, false, false, false, true,
    true, true, false, false, false, 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 Object Object0",
    "serialized= true   private Object Object1",
    "embedded= false   private Object Object2",
    "persistence-modifier= none    private Object Object3",
    "persistence-modifier= persistent    private Object Object4",
    "persistence-modifier= persistent  serialized= true   private Object Object5",
    "persistence-modifier= persistent  embedded= false   private Object Object6",
    "persistence-modifier= transactional    private Object Object7",
    "private static Object Object8",
    "private transient Object Object9",
    "persistence-modifier= none    private transient Object Object10",
    "persistence-modifier= persistent    private transient Object Object11",
    "persistence-modifier= persistent  serialized= true   private transient Object Object12",
    "persistence-modifier= persistent  embedded= false   private transient Object Object13",
    "persistence-modifier= transactional    private transient Object Object14",
    "private final Object Object15",
    "private volatile Object Object16",
    "serialized= true   private volatile Object Object17",
    "embedded= false   private volatile Object Object18",
    "persistence-modifier= none    private volatile Object Object19",
    "persistence-modifier= persistent    private volatile Object Object20",
    "persistence-modifier= persistent  serialized= true   private volatile Object Object21",
    "persistence-modifier= persistent  embedded= false   private volatile Object Object22",
    "persistence-modifier= transactional    private volatile Object Object23",
    "private static transient Object Object24",
    "private static final Object Object25",
    "private static volatile Object Object26",
    "private transient final Object Object27",
    "private transient volatile Object Object28",
    "persistence-modifier= none    private transient volatile Object Object29",
    "persistence-modifier= persistent    private transient volatile Object Object30",
    "persistence-modifier= persistent  serialized= true   private transient volatile Object Object31",
    "persistence-modifier= persistent  embedded= false   private transient volatile Object Object32",
    "persistence-modifier= transactional    private transient volatile Object Object33",
    "private static transient final Object Object34",
    "private static transient volatile Object Object35",
    "public Object Object36",
    "serialized= true   public Object Object37",
    "embedded= false   public Object Object38",
    "persistence-modifier= none    public Object Object39",
    "persistence-modifier= persistent    public Object Object40",
    "persistence-modifier= persistent  serialized= true   public Object Object41",
    "persistence-modifier= persistent  embedded= false   public Object Object42",
    "persistence-modifier= transactional    public Object Object43",
    "public static Object Object44",
    "public transient Object Object45",
    "persistence-modifier= none    public transient Object Object46",
    "persistence-modifier= persistent    public transient Object Object47",
    "persistence-modifier= persistent  serialized= true   public transient Object Object48",
    "persistence-modifier= persistent  embedded= false   public transient Object Object49",
    "persistence-modifier= transactional    public transient Object Object50",
    "public final Object Object51",
    "public volatile Object Object52",
    "serialized= true   public volatile Object Object53",
    "embedded= false   public volatile Object Object54",
    "persistence-modifier= none    public volatile Object Object55",
    "persistence-modifier= persistent    public volatile Object Object56",
    "persistence-modifier= persistent  serialized= true   public volatile Object Object57",
    "persistence-modifier= persistent  embedded= false   public volatile Object Object58",
    "persistence-modifier= transactional    public volatile Object Object59",
    "public static transient Object Object60",
    "public static final Object Object61",
    "public static volatile Object Object62",
    "public transient final Object Object63",
    "public transient volatile Object Object64",
    "persistence-modifier= none    public transient volatile Object Object65",
    "persistence-modifier= persistent    public transient volatile Object Object66",
    "persistence-modifier= persistent  serialized= true   public transient volatile Object Object67",
    "persistence-modifier= persistent  embedded= false   public transient volatile Object Object68",
    "persistence-modifier= transactional    public transient volatile Object Object69",
    "public static transient final Object Object70",
    "public static transient volatile Object Object71",
    "protected Object Object72",
    "serialized= true   protected Object Object73",
    "embedded= false   protected Object Object74",
    "persistence-modifier= none    protected Object Object75",
    "persistence-modifier= persistent    protected Object Object76",
    "persistence-modifier= persistent  serialized= true   protected Object Object77",
    "persistence-modifier= persistent  embedded= false   protected Object Object78",
    "persistence-modifier= transactional    protected Object Object79",
    "protected static Object Object80",
    "protected transient Object Object81",
    "persistence-modifier= none    protected transient Object Object82",
    "persistence-modifier= persistent    protected transient Object Object83",
    "persistence-modifier= persistent  serialized= true   protected transient Object Object84",
    "persistence-modifier= persistent  embedded= false   protected transient Object Object85",
    "persistence-modifier= transactional    protected transient Object Object86",
    "protected final Object Object87",
    "protected volatile Object Object88",
    "serialized= true   protected volatile Object Object89",
    "embedded= false   protected volatile Object Object90",
    "persistence-modifier= none    protected volatile Object Object91",
    "persistence-modifier= persistent    protected volatile Object Object92",
    "persistence-modifier= persistent  serialized= true   protected volatile Object Object93",
    "persistence-modifier= persistent  embedded= false   protected volatile Object Object94",
    "persistence-modifier= transactional    protected volatile Object Object95",
    "protected static transient Object Object96",
    "protected static final Object Object97",
    "protected static volatile Object Object98",
    "protected transient final Object Object99",
    "protected transient volatile Object Object100",
    "persistence-modifier= none    protected transient volatile Object Object101",
    "persistence-modifier= persistent    protected transient volatile Object Object102",
    "persistence-modifier= persistent  serialized= true   protected transient volatile Object Object103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile Object Object104",
    "persistence-modifier= transactional    protected transient volatile Object Object105",
    "protected static transient final Object Object106",
    "protected static transient volatile Object Object107",
    "Object Object108",
    "serialized= true   Object Object109",
    "embedded= false   Object Object110",
    "persistence-modifier= none    Object Object111",
    "persistence-modifier= persistent    Object Object112",
    "persistence-modifier= persistent  serialized= true   Object Object113",
    "persistence-modifier= persistent  embedded= false   Object Object114",
    "persistence-modifier= transactional    Object Object115",
    "static Object Object116",
    "transient Object Object117",
    "persistence-modifier= none    transient Object Object118",
    "persistence-modifier= persistent    transient Object Object119",
    "persistence-modifier= persistent  serialized= true   transient Object Object120",
    "persistence-modifier= persistent  embedded= false   transient Object Object121",
    "persistence-modifier= transactional    transient Object Object122",
    "final Object Object123",
    "volatile Object Object124",
    "serialized= true   volatile Object Object125",
    "embedded= false   volatile Object Object126",
    "persistence-modifier= none    volatile Object Object127",
    "persistence-modifier= persistent    volatile Object Object128",
    "persistence-modifier= persistent  serialized= true   volatile Object Object129",
    "persistence-modifier= persistent  embedded= false   volatile Object Object130",
    "persistence-modifier= transactional    volatile Object Object131",
    "static transient Object Object132",
    "static final Object Object133",
    "static volatile Object Object134",
    "transient final Object Object135",
    "transient volatile Object Object136",
    "persistence-modifier= none    transient volatile Object Object137",
    "persistence-modifier= persistent    transient volatile Object Object138",
    "persistence-modifier= persistent  serialized= true   transient volatile Object Object139",
    "persistence-modifier= persistent  embedded= false   transient volatile Object Object140",
    "persistence-modifier= transactional    transient volatile Object Object141",
    "static transient final Object Object142",
    "static transient volatile Object Object143"
  };

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

  public Object get(int index) {
    switch (index) {
      case (0):
        return Object0;
      case (1):
        return Object1;
      case (2):
        return Object2;
      case (3):
        return Object3;
      case (4):
        return Object4;
      case (5):
        return Object5;
      case (6):
        return Object6;
      case (7):
        return Object7;
      case (8):
        return Object8;
      case (9):
        return Object9;
      case (10):
        return Object10;
      case (11):
        return Object11;
      case (12):
        return Object12;
      case (13):
        return Object13;
      case (14):
        return Object14;
      case (15):
        return Object15;
      case (16):
        return Object16;
      case (17):
        return Object17;
      case (18):
        return Object18;
      case (19):
        return Object19;
      case (20):
        return Object20;
      case (21):
        return Object21;
      case (22):
        return Object22;
      case (23):
        return Object23;
      case (24):
        return Object24;
      case (25):
        return Object25;
      case (26):
        return Object26;
      case (27):
        return Object27;
      case (28):
        return Object28;
      case (29):
        return Object29;
      case (30):
        return Object30;
      case (31):
        return Object31;
      case (32):
        return Object32;
      case (33):
        return Object33;
      case (34):
        return Object34;
      case (35):
        return Object35;
      case (36):
        return Object36;
      case (37):
        return Object37;
      case (38):
        return Object38;
      case (39):
        return Object39;
      case (40):
        return Object40;
      case (41):
        return Object41;
      case (42):
        return Object42;
      case (43):
        return Object43;
      case (44):
        return Object44;
      case (45):
        return Object45;
      case (46):
        return Object46;
      case (47):
        return Object47;
      case (48):
        return Object48;
      case (49):
        return Object49;
      case (50):
        return Object50;
      case (51):
        return Object51;
      case (52):
        return Object52;
      case (53):
        return Object53;
      case (54):
        return Object54;
      case (55):
        return Object55;
      case (56):
        return Object56;
      case (57):
        return Object57;
      case (58):
        return Object58;
      case (59):
        return Object59;
      case (60):
        return Object60;
      case (61):
        return Object61;
      case (62):
        return Object62;
      case (63):
        return Object63;
      case (64):
        return Object64;
      case (65):
        return Object65;
      case (66):
        return Object66;
      case (67):
        return Object67;
      case (68):
        return Object68;
      case (69):
        return Object69;
      case (70):
        return Object70;
      case (71):
        return Object71;
      case (72):
        return Object72;
      case (73):
        return Object73;
      case (74):
        return Object74;
      case (75):
        return Object75;
      case (76):
        return Object76;
      case (77):
        return Object77;
      case (78):
        return Object78;
      case (79):
        return Object79;
      case (80):
        return Object80;
      case (81):
        return Object81;
      case (82):
        return Object82;
      case (83):
        return Object83;
      case (84):
        return Object84;
      case (85):
        return Object85;
      case (86):
        return Object86;
      case (87):
        return Object87;
      case (88):
        return Object88;
      case (89):
        return Object89;
      case (90):
        return Object90;
      case (91):
        return Object91;
      case (92):
        return Object92;
      case (93):
        return Object93;
      case (94):
        return Object94;
      case (95):
        return Object95;
      case (96):
        return Object96;
      case (97):
        return Object97;
      case (98):
        return Object98;
      case (99):
        return Object99;
      case (100):
        return Object100;
      case (101):
        return Object101;
      case (102):
        return Object102;
      case (103):
        return Object103;
      case (104):
        return Object104;
      case (105):
        return Object105;
      case (106):
        return Object106;
      case (107):
        return Object107;
      case (108):
        return Object108;
      case (109):
        return Object109;
      case (110):
        return Object110;
      case (111):
        return Object111;
      case (112):
        return Object112;
      case (113):
        return Object113;
      case (114):
        return Object114;
      case (115):
        return Object115;
      case (116):
        return Object116;
      case (117):
        return Object117;
      case (118):
        return Object118;
      case (119):
        return Object119;
      case (120):
        return Object120;
      case (121):
        return Object121;
      case (122):
        return Object122;
      case (123):
        return Object123;
      case (124):
        return Object124;
      case (125):
        return Object125;
      case (126):
        return Object126;
      case (127):
        return Object127;
      case (128):
        return Object128;
      case (129):
        return Object129;
      case (130):
        return Object130;
      case (131):
        return Object131;
      case (132):
        return Object132;
      case (133):
        return Object133;
      case (134):
        return Object134;
      case (135):
        return Object135;
      case (136):
        return Object136;
      case (137):
        return Object137;
      case (138):
        return Object138;
      case (139):
        return Object139;
      case (140):
        return Object140;
      case (141):
        return Object141;
      case (142):
        return Object142;
      case (143):
        return Object143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, Object value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        Object0 = value;
        break;
      case (1):
        Object1 = value;
        break;
      case (2):
        Object2 = value;
        break;
      case (3):
        Object3 = value;
        break;
      case (4):
        Object4 = value;
        break;
      case (5):
        Object5 = value;
        break;
      case (6):
        Object6 = value;
        break;
      case (7):
        Object7 = value;
        break;
      case (8):
        Object8 = value;
        break;
      case (9):
        Object9 = value;
        break;
      case (10):
        Object10 = value;
        break;
      case (11):
        Object11 = value;
        break;
      case (12):
        Object12 = value;
        break;
      case (13):
        Object13 = value;
        break;
      case (14):
        Object14 = value;
        break;
      case (16):
        Object16 = value;
        break;
      case (17):
        Object17 = value;
        break;
      case (18):
        Object18 = value;
        break;
      case (19):
        Object19 = value;
        break;
      case (20):
        Object20 = value;
        break;
      case (21):
        Object21 = value;
        break;
      case (22):
        Object22 = value;
        break;
      case (23):
        Object23 = value;
        break;
      case (24):
        Object24 = value;
        break;
      case (26):
        Object26 = value;
        break;
      case (28):
        Object28 = value;
        break;
      case (29):
        Object29 = value;
        break;
      case (30):
        Object30 = value;
        break;
      case (31):
        Object31 = value;
        break;
      case (32):
        Object32 = value;
        break;
      case (33):
        Object33 = value;
        break;
      case (35):
        Object35 = value;
        break;
      case (36):
        Object36 = value;
        break;
      case (37):
        Object37 = value;
        break;
      case (38):
        Object38 = value;
        break;
      case (39):
        Object39 = value;
        break;
      case (40):
        Object40 = value;
        break;
      case (41):
        Object41 = value;
        break;
      case (42):
        Object42 = value;
        break;
      case (43):
        Object43 = value;
        break;
      case (44):
        Object44 = value;
        break;
      case (45):
        Object45 = value;
        break;
      case (46):
        Object46 = value;
        break;
      case (47):
        Object47 = value;
        break;
      case (48):
        Object48 = value;
        break;
      case (49):
        Object49 = value;
        break;
      case (50):
        Object50 = value;
        break;
      case (52):
        Object52 = value;
        break;
      case (53):
        Object53 = value;
        break;
      case (54):
        Object54 = value;
        break;
      case (55):
        Object55 = value;
        break;
      case (56):
        Object56 = value;
        break;
      case (57):
        Object57 = value;
        break;
      case (58):
        Object58 = value;
        break;
      case (59):
        Object59 = value;
        break;
      case (60):
        Object60 = value;
        break;
      case (62):
        Object62 = value;
        break;
      case (64):
        Object64 = value;
        break;
      case (65):
        Object65 = value;
        break;
      case (66):
        Object66 = value;
        break;
      case (67):
        Object67 = value;
        break;
      case (68):
        Object68 = value;
        break;
      case (69):
        Object69 = value;
        break;
      case (71):
        Object71 = value;
        break;
      case (72):
        Object72 = value;
        break;
      case (73):
        Object73 = value;
        break;
      case (74):
        Object74 = value;
        break;
      case (75):
        Object75 = value;
        break;
      case (76):
        Object76 = value;
        break;
      case (77):
        Object77 = value;
        break;
      case (78):
        Object78 = value;
        break;
      case (79):
        Object79 = value;
        break;
      case (80):
        Object80 = value;
        break;
      case (81):
        Object81 = value;
        break;
      case (82):
        Object82 = value;
        break;
      case (83):
        Object83 = value;
        break;
      case (84):
        Object84 = value;
        break;
      case (85):
        Object85 = value;
        break;
      case (86):
        Object86 = value;
        break;
      case (88):
        Object88 = value;
        break;
      case (89):
        Object89 = value;
        break;
      case (90):
        Object90 = value;
        break;
      case (91):
        Object91 = value;
        break;
      case (92):
        Object92 = value;
        break;
      case (93):
        Object93 = value;
        break;
      case (94):
        Object94 = value;
        break;
      case (95):
        Object95 = value;
        break;
      case (96):
        Object96 = value;
        break;
      case (98):
        Object98 = value;
        break;
      case (100):
        Object100 = value;
        break;
      case (101):
        Object101 = value;
        break;
      case (102):
        Object102 = value;
        break;
      case (103):
        Object103 = value;
        break;
      case (104):
        Object104 = value;
        break;
      case (105):
        Object105 = value;
        break;
      case (107):
        Object107 = value;
        break;
      case (108):
        Object108 = value;
        break;
      case (109):
        Object109 = value;
        break;
      case (110):
        Object110 = value;
        break;
      case (111):
        Object111 = value;
        break;
      case (112):
        Object112 = value;
        break;
      case (113):
        Object113 = value;
        break;
      case (114):
        Object114 = value;
        break;
      case (115):
        Object115 = value;
        break;
      case (116):
        Object116 = value;
        break;
      case (117):
        Object117 = value;
        break;
      case (118):
        Object118 = value;
        break;
      case (119):
        Object119 = value;
        break;
      case (120):
        Object120 = value;
        break;
      case (121):
        Object121 = value;
        break;
      case (122):
        Object122 = value;
        break;
      case (124):
        Object124 = value;
        break;
      case (125):
        Object125 = value;
        break;
      case (126):
        Object126 = value;
        break;
      case (127):
        Object127 = value;
        break;
      case (128):
        Object128 = value;
        break;
      case (129):
        Object129 = value;
        break;
      case (130):
        Object130 = value;
        break;
      case (131):
        Object131 = value;
        break;
      case (132):
        Object132 = value;
        break;
      case (134):
        Object134 = value;
        break;
      case (136):
        Object136 = value;
        break;
      case (137):
        Object137 = value;
        break;
      case (138):
        Object138 = value;
        break;
      case (139):
        Object139 = value;
        break;
      case (140):
        Object140 = value;
        break;
      case (141):
        Object141 = value;
        break;
      case (143):
        Object143 = 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);
    }
  }
}
