/*
 * 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 FieldsOfInteger {
  public int identifier;
  private Integer Integer0;
  private Integer Integer1;
  private Integer Integer2;
  private Integer Integer3;
  private Integer Integer4;
  private Integer Integer5;
  private Integer Integer6;
  private Integer Integer7;
  private static Integer Integer8;
  private transient Integer Integer9;
  private transient Integer Integer10;
  private transient Integer Integer11;
  private transient Integer Integer12;
  private transient Integer Integer13;
  private transient Integer Integer14;
  private final Integer Integer15 = Integer.valueOf(5);
  private volatile Integer Integer16;
  private volatile Integer Integer17;
  private volatile Integer Integer18;
  private volatile Integer Integer19;
  private volatile Integer Integer20;
  private volatile Integer Integer21;
  private volatile Integer Integer22;
  private volatile Integer Integer23;
  private static transient Integer Integer24;
  private static final Integer Integer25 = Integer.valueOf(5);
  private static volatile Integer Integer26;
  private final transient Integer Integer27 = Integer.valueOf(5);
  private transient volatile Integer Integer28;
  private transient volatile Integer Integer29;
  private transient volatile Integer Integer30;
  private transient volatile Integer Integer31;
  private transient volatile Integer Integer32;
  private transient volatile Integer Integer33;
  private static final transient Integer Integer34 = Integer.valueOf(5);
  private static transient volatile Integer Integer35;
  public Integer Integer36;
  public Integer Integer37;
  public Integer Integer38;
  public Integer Integer39;
  public Integer Integer40;
  public Integer Integer41;
  public Integer Integer42;
  public Integer Integer43;
  public static Integer Integer44;
  public transient Integer Integer45;
  public transient Integer Integer46;
  public transient Integer Integer47;
  public transient Integer Integer48;
  public transient Integer Integer49;
  public transient Integer Integer50;
  public final Integer Integer51 = Integer.valueOf(5);
  public volatile Integer Integer52;
  public volatile Integer Integer53;
  public volatile Integer Integer54;
  public volatile Integer Integer55;
  public volatile Integer Integer56;
  public volatile Integer Integer57;
  public volatile Integer Integer58;
  public volatile Integer Integer59;
  public static transient Integer Integer60;
  public static final Integer Integer61 = Integer.valueOf(5);
  public static volatile Integer Integer62;
  public final transient Integer Integer63 = Integer.valueOf(5);
  public transient volatile Integer Integer64;
  public transient volatile Integer Integer65;
  public transient volatile Integer Integer66;
  public transient volatile Integer Integer67;
  public transient volatile Integer Integer68;
  public transient volatile Integer Integer69;
  public static final transient Integer Integer70 = Integer.valueOf(5);
  public static transient volatile Integer Integer71;
  protected Integer Integer72;
  protected Integer Integer73;
  protected Integer Integer74;
  protected Integer Integer75;
  protected Integer Integer76;
  protected Integer Integer77;
  protected Integer Integer78;
  protected Integer Integer79;
  protected static Integer Integer80;
  protected transient Integer Integer81;
  protected transient Integer Integer82;
  protected transient Integer Integer83;
  protected transient Integer Integer84;
  protected transient Integer Integer85;
  protected transient Integer Integer86;
  protected final Integer Integer87 = Integer.valueOf(5);
  protected volatile Integer Integer88;
  protected volatile Integer Integer89;
  protected volatile Integer Integer90;
  protected volatile Integer Integer91;
  protected volatile Integer Integer92;
  protected volatile Integer Integer93;
  protected volatile Integer Integer94;
  protected volatile Integer Integer95;
  protected static transient Integer Integer96;
  protected static final Integer Integer97 = Integer.valueOf(5);
  protected static volatile Integer Integer98;
  protected final transient Integer Integer99 = Integer.valueOf(5);
  protected transient volatile Integer Integer100;
  protected transient volatile Integer Integer101;
  protected transient volatile Integer Integer102;
  protected transient volatile Integer Integer103;
  protected transient volatile Integer Integer104;
  protected transient volatile Integer Integer105;
  protected static final transient Integer Integer106 = Integer.valueOf(5);
  protected static transient volatile Integer Integer107;
  Integer Integer108;
  Integer Integer109;
  Integer Integer110;
  Integer Integer111;
  Integer Integer112;
  Integer Integer113;
  Integer Integer114;
  Integer Integer115;
  static Integer Integer116;
  transient Integer Integer117;
  transient Integer Integer118;
  transient Integer Integer119;
  transient Integer Integer120;
  transient Integer Integer121;
  transient Integer Integer122;
  final Integer Integer123 = Integer.valueOf(5);
  volatile Integer Integer124;
  volatile Integer Integer125;
  volatile Integer Integer126;
  volatile Integer Integer127;
  volatile Integer Integer128;
  volatile Integer Integer129;
  volatile Integer Integer130;
  volatile Integer Integer131;
  static transient Integer Integer132;
  static final Integer Integer133 = Integer.valueOf(5);
  static volatile Integer Integer134;
  final transient Integer Integer135 = Integer.valueOf(5);
  transient volatile Integer Integer136;
  transient volatile Integer Integer137;
  transient volatile Integer Integer138;
  transient volatile Integer Integer139;
  transient volatile Integer Integer140;
  transient volatile Integer Integer141;
  static final transient Integer Integer142 = Integer.valueOf(5);
  static transient volatile Integer Integer143;

  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 Integer Integer0",
    "embedded= true   private Integer Integer1",
    "embedded= false   private Integer Integer2",
    "persistence-modifier= none    private Integer Integer3",
    "persistence-modifier= persistent    private Integer Integer4",
    "persistence-modifier= persistent  embedded= true   private Integer Integer5",
    "persistence-modifier= persistent  embedded= false   private Integer Integer6",
    "persistence-modifier= transactional    private Integer Integer7",
    "private static Integer Integer8",
    "private transient Integer Integer9",
    "persistence-modifier= none    private transient Integer Integer10",
    "persistence-modifier= persistent    private transient Integer Integer11",
    "persistence-modifier= persistent  embedded= true   private transient Integer Integer12",
    "persistence-modifier= persistent  embedded= false   private transient Integer Integer13",
    "persistence-modifier= transactional    private transient Integer Integer14",
    "private final Integer Integer15",
    "private volatile Integer Integer16",
    "embedded= true   private volatile Integer Integer17",
    "embedded= false   private volatile Integer Integer18",
    "persistence-modifier= none    private volatile Integer Integer19",
    "persistence-modifier= persistent    private volatile Integer Integer20",
    "persistence-modifier= persistent  embedded= true   private volatile Integer Integer21",
    "persistence-modifier= persistent  embedded= false   private volatile Integer Integer22",
    "persistence-modifier= transactional    private volatile Integer Integer23",
    "private static transient Integer Integer24",
    "private static final Integer Integer25",
    "private static volatile Integer Integer26",
    "private transient final Integer Integer27",
    "private transient volatile Integer Integer28",
    "persistence-modifier= none    private transient volatile Integer Integer29",
    "persistence-modifier= persistent    private transient volatile Integer Integer30",
    "persistence-modifier= persistent  embedded= true   private transient volatile Integer Integer31",
    "persistence-modifier= persistent  embedded= false   private transient volatile Integer Integer32",
    "persistence-modifier= transactional    private transient volatile Integer Integer33",
    "private static transient final Integer Integer34",
    "private static transient volatile Integer Integer35",
    "public Integer Integer36",
    "embedded= true   public Integer Integer37",
    "embedded= false   public Integer Integer38",
    "persistence-modifier= none    public Integer Integer39",
    "persistence-modifier= persistent    public Integer Integer40",
    "persistence-modifier= persistent  embedded= true   public Integer Integer41",
    "persistence-modifier= persistent  embedded= false   public Integer Integer42",
    "persistence-modifier= transactional    public Integer Integer43",
    "public static Integer Integer44",
    "public transient Integer Integer45",
    "persistence-modifier= none    public transient Integer Integer46",
    "persistence-modifier= persistent    public transient Integer Integer47",
    "persistence-modifier= persistent  embedded= true   public transient Integer Integer48",
    "persistence-modifier= persistent  embedded= false   public transient Integer Integer49",
    "persistence-modifier= transactional    public transient Integer Integer50",
    "public final Integer Integer51",
    "public volatile Integer Integer52",
    "embedded= true   public volatile Integer Integer53",
    "embedded= false   public volatile Integer Integer54",
    "persistence-modifier= none    public volatile Integer Integer55",
    "persistence-modifier= persistent    public volatile Integer Integer56",
    "persistence-modifier= persistent  embedded= true   public volatile Integer Integer57",
    "persistence-modifier= persistent  embedded= false   public volatile Integer Integer58",
    "persistence-modifier= transactional    public volatile Integer Integer59",
    "public static transient Integer Integer60",
    "public static final Integer Integer61",
    "public static volatile Integer Integer62",
    "public transient final Integer Integer63",
    "public transient volatile Integer Integer64",
    "persistence-modifier= none    public transient volatile Integer Integer65",
    "persistence-modifier= persistent    public transient volatile Integer Integer66",
    "persistence-modifier= persistent  embedded= true   public transient volatile Integer Integer67",
    "persistence-modifier= persistent  embedded= false   public transient volatile Integer Integer68",
    "persistence-modifier= transactional    public transient volatile Integer Integer69",
    "public static transient final Integer Integer70",
    "public static transient volatile Integer Integer71",
    "protected Integer Integer72",
    "embedded= true   protected Integer Integer73",
    "embedded= false   protected Integer Integer74",
    "persistence-modifier= none    protected Integer Integer75",
    "persistence-modifier= persistent    protected Integer Integer76",
    "persistence-modifier= persistent  embedded= true   protected Integer Integer77",
    "persistence-modifier= persistent  embedded= false   protected Integer Integer78",
    "persistence-modifier= transactional    protected Integer Integer79",
    "protected static Integer Integer80",
    "protected transient Integer Integer81",
    "persistence-modifier= none    protected transient Integer Integer82",
    "persistence-modifier= persistent    protected transient Integer Integer83",
    "persistence-modifier= persistent  embedded= true   protected transient Integer Integer84",
    "persistence-modifier= persistent  embedded= false   protected transient Integer Integer85",
    "persistence-modifier= transactional    protected transient Integer Integer86",
    "protected final Integer Integer87",
    "protected volatile Integer Integer88",
    "embedded= true   protected volatile Integer Integer89",
    "embedded= false   protected volatile Integer Integer90",
    "persistence-modifier= none    protected volatile Integer Integer91",
    "persistence-modifier= persistent    protected volatile Integer Integer92",
    "persistence-modifier= persistent  embedded= true   protected volatile Integer Integer93",
    "persistence-modifier= persistent  embedded= false   protected volatile Integer Integer94",
    "persistence-modifier= transactional    protected volatile Integer Integer95",
    "protected static transient Integer Integer96",
    "protected static final Integer Integer97",
    "protected static volatile Integer Integer98",
    "protected transient final Integer Integer99",
    "protected transient volatile Integer Integer100",
    "persistence-modifier= none    protected transient volatile Integer Integer101",
    "persistence-modifier= persistent    protected transient volatile Integer Integer102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile Integer Integer103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile Integer Integer104",
    "persistence-modifier= transactional    protected transient volatile Integer Integer105",
    "protected static transient final Integer Integer106",
    "protected static transient volatile Integer Integer107",
    "Integer Integer108",
    "embedded= true   Integer Integer109",
    "embedded= false   Integer Integer110",
    "persistence-modifier= none    Integer Integer111",
    "persistence-modifier= persistent    Integer Integer112",
    "persistence-modifier= persistent  embedded= true   Integer Integer113",
    "persistence-modifier= persistent  embedded= false   Integer Integer114",
    "persistence-modifier= transactional    Integer Integer115",
    "static Integer Integer116",
    "transient Integer Integer117",
    "persistence-modifier= none    transient Integer Integer118",
    "persistence-modifier= persistent    transient Integer Integer119",
    "persistence-modifier= persistent  embedded= true   transient Integer Integer120",
    "persistence-modifier= persistent  embedded= false   transient Integer Integer121",
    "persistence-modifier= transactional    transient Integer Integer122",
    "final Integer Integer123",
    "volatile Integer Integer124",
    "embedded= true   volatile Integer Integer125",
    "embedded= false   volatile Integer Integer126",
    "persistence-modifier= none    volatile Integer Integer127",
    "persistence-modifier= persistent    volatile Integer Integer128",
    "persistence-modifier= persistent  embedded= true   volatile Integer Integer129",
    "persistence-modifier= persistent  embedded= false   volatile Integer Integer130",
    "persistence-modifier= transactional    volatile Integer Integer131",
    "static transient Integer Integer132",
    "static final Integer Integer133",
    "static volatile Integer Integer134",
    "transient final Integer Integer135",
    "transient volatile Integer Integer136",
    "persistence-modifier= none    transient volatile Integer Integer137",
    "persistence-modifier= persistent    transient volatile Integer Integer138",
    "persistence-modifier= persistent  embedded= true   transient volatile Integer Integer139",
    "persistence-modifier= persistent  embedded= false   transient volatile Integer Integer140",
    "persistence-modifier= transactional    transient volatile Integer Integer141",
    "static transient final Integer Integer142",
    "static transient volatile Integer Integer143"
  };

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

  public Integer get(int index) {
    switch (index) {
      case (0):
        return Integer0;
      case (1):
        return Integer1;
      case (2):
        return Integer2;
      case (3):
        return Integer3;
      case (4):
        return Integer4;
      case (5):
        return Integer5;
      case (6):
        return Integer6;
      case (7):
        return Integer7;
      case (8):
        return Integer8;
      case (9):
        return Integer9;
      case (10):
        return Integer10;
      case (11):
        return Integer11;
      case (12):
        return Integer12;
      case (13):
        return Integer13;
      case (14):
        return Integer14;
      case (15):
        return Integer15;
      case (16):
        return Integer16;
      case (17):
        return Integer17;
      case (18):
        return Integer18;
      case (19):
        return Integer19;
      case (20):
        return Integer20;
      case (21):
        return Integer21;
      case (22):
        return Integer22;
      case (23):
        return Integer23;
      case (24):
        return Integer24;
      case (25):
        return Integer25;
      case (26):
        return Integer26;
      case (27):
        return Integer27;
      case (28):
        return Integer28;
      case (29):
        return Integer29;
      case (30):
        return Integer30;
      case (31):
        return Integer31;
      case (32):
        return Integer32;
      case (33):
        return Integer33;
      case (34):
        return Integer34;
      case (35):
        return Integer35;
      case (36):
        return Integer36;
      case (37):
        return Integer37;
      case (38):
        return Integer38;
      case (39):
        return Integer39;
      case (40):
        return Integer40;
      case (41):
        return Integer41;
      case (42):
        return Integer42;
      case (43):
        return Integer43;
      case (44):
        return Integer44;
      case (45):
        return Integer45;
      case (46):
        return Integer46;
      case (47):
        return Integer47;
      case (48):
        return Integer48;
      case (49):
        return Integer49;
      case (50):
        return Integer50;
      case (51):
        return Integer51;
      case (52):
        return Integer52;
      case (53):
        return Integer53;
      case (54):
        return Integer54;
      case (55):
        return Integer55;
      case (56):
        return Integer56;
      case (57):
        return Integer57;
      case (58):
        return Integer58;
      case (59):
        return Integer59;
      case (60):
        return Integer60;
      case (61):
        return Integer61;
      case (62):
        return Integer62;
      case (63):
        return Integer63;
      case (64):
        return Integer64;
      case (65):
        return Integer65;
      case (66):
        return Integer66;
      case (67):
        return Integer67;
      case (68):
        return Integer68;
      case (69):
        return Integer69;
      case (70):
        return Integer70;
      case (71):
        return Integer71;
      case (72):
        return Integer72;
      case (73):
        return Integer73;
      case (74):
        return Integer74;
      case (75):
        return Integer75;
      case (76):
        return Integer76;
      case (77):
        return Integer77;
      case (78):
        return Integer78;
      case (79):
        return Integer79;
      case (80):
        return Integer80;
      case (81):
        return Integer81;
      case (82):
        return Integer82;
      case (83):
        return Integer83;
      case (84):
        return Integer84;
      case (85):
        return Integer85;
      case (86):
        return Integer86;
      case (87):
        return Integer87;
      case (88):
        return Integer88;
      case (89):
        return Integer89;
      case (90):
        return Integer90;
      case (91):
        return Integer91;
      case (92):
        return Integer92;
      case (93):
        return Integer93;
      case (94):
        return Integer94;
      case (95):
        return Integer95;
      case (96):
        return Integer96;
      case (97):
        return Integer97;
      case (98):
        return Integer98;
      case (99):
        return Integer99;
      case (100):
        return Integer100;
      case (101):
        return Integer101;
      case (102):
        return Integer102;
      case (103):
        return Integer103;
      case (104):
        return Integer104;
      case (105):
        return Integer105;
      case (106):
        return Integer106;
      case (107):
        return Integer107;
      case (108):
        return Integer108;
      case (109):
        return Integer109;
      case (110):
        return Integer110;
      case (111):
        return Integer111;
      case (112):
        return Integer112;
      case (113):
        return Integer113;
      case (114):
        return Integer114;
      case (115):
        return Integer115;
      case (116):
        return Integer116;
      case (117):
        return Integer117;
      case (118):
        return Integer118;
      case (119):
        return Integer119;
      case (120):
        return Integer120;
      case (121):
        return Integer121;
      case (122):
        return Integer122;
      case (123):
        return Integer123;
      case (124):
        return Integer124;
      case (125):
        return Integer125;
      case (126):
        return Integer126;
      case (127):
        return Integer127;
      case (128):
        return Integer128;
      case (129):
        return Integer129;
      case (130):
        return Integer130;
      case (131):
        return Integer131;
      case (132):
        return Integer132;
      case (133):
        return Integer133;
      case (134):
        return Integer134;
      case (135):
        return Integer135;
      case (136):
        return Integer136;
      case (137):
        return Integer137;
      case (138):
        return Integer138;
      case (139):
        return Integer139;
      case (140):
        return Integer140;
      case (141):
        return Integer141;
      case (142):
        return Integer142;
      case (143):
        return Integer143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, Integer value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        Integer0 = value;
        break;
      case (1):
        Integer1 = value;
        break;
      case (2):
        Integer2 = value;
        break;
      case (3):
        Integer3 = value;
        break;
      case (4):
        Integer4 = value;
        break;
      case (5):
        Integer5 = value;
        break;
      case (6):
        Integer6 = value;
        break;
      case (7):
        Integer7 = value;
        break;
      case (8):
        Integer8 = value;
        break;
      case (9):
        Integer9 = value;
        break;
      case (10):
        Integer10 = value;
        break;
      case (11):
        Integer11 = value;
        break;
      case (12):
        Integer12 = value;
        break;
      case (13):
        Integer13 = value;
        break;
      case (14):
        Integer14 = value;
        break;
      case (16):
        Integer16 = value;
        break;
      case (17):
        Integer17 = value;
        break;
      case (18):
        Integer18 = value;
        break;
      case (19):
        Integer19 = value;
        break;
      case (20):
        Integer20 = value;
        break;
      case (21):
        Integer21 = value;
        break;
      case (22):
        Integer22 = value;
        break;
      case (23):
        Integer23 = value;
        break;
      case (24):
        Integer24 = value;
        break;
      case (26):
        Integer26 = value;
        break;
      case (28):
        Integer28 = value;
        break;
      case (29):
        Integer29 = value;
        break;
      case (30):
        Integer30 = value;
        break;
      case (31):
        Integer31 = value;
        break;
      case (32):
        Integer32 = value;
        break;
      case (33):
        Integer33 = value;
        break;
      case (35):
        Integer35 = value;
        break;
      case (36):
        Integer36 = value;
        break;
      case (37):
        Integer37 = value;
        break;
      case (38):
        Integer38 = value;
        break;
      case (39):
        Integer39 = value;
        break;
      case (40):
        Integer40 = value;
        break;
      case (41):
        Integer41 = value;
        break;
      case (42):
        Integer42 = value;
        break;
      case (43):
        Integer43 = value;
        break;
      case (44):
        Integer44 = value;
        break;
      case (45):
        Integer45 = value;
        break;
      case (46):
        Integer46 = value;
        break;
      case (47):
        Integer47 = value;
        break;
      case (48):
        Integer48 = value;
        break;
      case (49):
        Integer49 = value;
        break;
      case (50):
        Integer50 = value;
        break;
      case (52):
        Integer52 = value;
        break;
      case (53):
        Integer53 = value;
        break;
      case (54):
        Integer54 = value;
        break;
      case (55):
        Integer55 = value;
        break;
      case (56):
        Integer56 = value;
        break;
      case (57):
        Integer57 = value;
        break;
      case (58):
        Integer58 = value;
        break;
      case (59):
        Integer59 = value;
        break;
      case (60):
        Integer60 = value;
        break;
      case (62):
        Integer62 = value;
        break;
      case (64):
        Integer64 = value;
        break;
      case (65):
        Integer65 = value;
        break;
      case (66):
        Integer66 = value;
        break;
      case (67):
        Integer67 = value;
        break;
      case (68):
        Integer68 = value;
        break;
      case (69):
        Integer69 = value;
        break;
      case (71):
        Integer71 = value;
        break;
      case (72):
        Integer72 = value;
        break;
      case (73):
        Integer73 = value;
        break;
      case (74):
        Integer74 = value;
        break;
      case (75):
        Integer75 = value;
        break;
      case (76):
        Integer76 = value;
        break;
      case (77):
        Integer77 = value;
        break;
      case (78):
        Integer78 = value;
        break;
      case (79):
        Integer79 = value;
        break;
      case (80):
        Integer80 = value;
        break;
      case (81):
        Integer81 = value;
        break;
      case (82):
        Integer82 = value;
        break;
      case (83):
        Integer83 = value;
        break;
      case (84):
        Integer84 = value;
        break;
      case (85):
        Integer85 = value;
        break;
      case (86):
        Integer86 = value;
        break;
      case (88):
        Integer88 = value;
        break;
      case (89):
        Integer89 = value;
        break;
      case (90):
        Integer90 = value;
        break;
      case (91):
        Integer91 = value;
        break;
      case (92):
        Integer92 = value;
        break;
      case (93):
        Integer93 = value;
        break;
      case (94):
        Integer94 = value;
        break;
      case (95):
        Integer95 = value;
        break;
      case (96):
        Integer96 = value;
        break;
      case (98):
        Integer98 = value;
        break;
      case (100):
        Integer100 = value;
        break;
      case (101):
        Integer101 = value;
        break;
      case (102):
        Integer102 = value;
        break;
      case (103):
        Integer103 = value;
        break;
      case (104):
        Integer104 = value;
        break;
      case (105):
        Integer105 = value;
        break;
      case (107):
        Integer107 = value;
        break;
      case (108):
        Integer108 = value;
        break;
      case (109):
        Integer109 = value;
        break;
      case (110):
        Integer110 = value;
        break;
      case (111):
        Integer111 = value;
        break;
      case (112):
        Integer112 = value;
        break;
      case (113):
        Integer113 = value;
        break;
      case (114):
        Integer114 = value;
        break;
      case (115):
        Integer115 = value;
        break;
      case (116):
        Integer116 = value;
        break;
      case (117):
        Integer117 = value;
        break;
      case (118):
        Integer118 = value;
        break;
      case (119):
        Integer119 = value;
        break;
      case (120):
        Integer120 = value;
        break;
      case (121):
        Integer121 = value;
        break;
      case (122):
        Integer122 = value;
        break;
      case (124):
        Integer124 = value;
        break;
      case (125):
        Integer125 = value;
        break;
      case (126):
        Integer126 = value;
        break;
      case (127):
        Integer127 = value;
        break;
      case (128):
        Integer128 = value;
        break;
      case (129):
        Integer129 = value;
        break;
      case (130):
        Integer130 = value;
        break;
      case (131):
        Integer131 = value;
        break;
      case (132):
        Integer132 = value;
        break;
      case (134):
        Integer134 = value;
        break;
      case (136):
        Integer136 = value;
        break;
      case (137):
        Integer137 = value;
        break;
      case (138):
        Integer138 = value;
        break;
      case (139):
        Integer139 = value;
        break;
      case (140):
        Integer140 = value;
        break;
      case (141):
        Integer141 = value;
        break;
      case (143):
        Integer143 = 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);
    }
  }
}
