/*
 * 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 FieldsOfShort {
  public int identifier;
  private Short Short0;
  private Short Short1;
  private Short Short2;
  private Short Short3;
  private Short Short4;
  private Short Short5;
  private Short Short6;
  private Short Short7;
  private static Short Short8;
  private transient Short Short9;
  private transient Short Short10;
  private transient Short Short11;
  private transient Short Short12;
  private transient Short Short13;
  private transient Short Short14;
  private final Short Short15 = Short.valueOf((short) 5);
  private volatile Short Short16;
  private volatile Short Short17;
  private volatile Short Short18;
  private volatile Short Short19;
  private volatile Short Short20;
  private volatile Short Short21;
  private volatile Short Short22;
  private volatile Short Short23;
  private static transient Short Short24;
  private static final Short Short25 = Short.valueOf((short) 5);
  private static volatile Short Short26;
  private final transient Short Short27 = Short.valueOf((short) 5);
  private transient volatile Short Short28;
  private transient volatile Short Short29;
  private transient volatile Short Short30;
  private transient volatile Short Short31;
  private transient volatile Short Short32;
  private transient volatile Short Short33;
  private static final transient Short Short34 = Short.valueOf((short) 5);
  private static transient volatile Short Short35;
  public Short Short36;
  public Short Short37;
  public Short Short38;
  public Short Short39;
  public Short Short40;
  public Short Short41;
  public Short Short42;
  public Short Short43;
  public static Short Short44;
  public transient Short Short45;
  public transient Short Short46;
  public transient Short Short47;
  public transient Short Short48;
  public transient Short Short49;
  public transient Short Short50;
  public final Short Short51 = Short.valueOf((short) 5);
  public volatile Short Short52;
  public volatile Short Short53;
  public volatile Short Short54;
  public volatile Short Short55;
  public volatile Short Short56;
  public volatile Short Short57;
  public volatile Short Short58;
  public volatile Short Short59;
  public static transient Short Short60;
  public static final Short Short61 = Short.valueOf((short) 5);
  public static volatile Short Short62;
  public final transient Short Short63 = Short.valueOf((short) 5);
  public transient volatile Short Short64;
  public transient volatile Short Short65;
  public transient volatile Short Short66;
  public transient volatile Short Short67;
  public transient volatile Short Short68;
  public transient volatile Short Short69;
  public static final transient Short Short70 = Short.valueOf((short) 5);
  public static transient volatile Short Short71;
  protected Short Short72;
  protected Short Short73;
  protected Short Short74;
  protected Short Short75;
  protected Short Short76;
  protected Short Short77;
  protected Short Short78;
  protected Short Short79;
  protected static Short Short80;
  protected transient Short Short81;
  protected transient Short Short82;
  protected transient Short Short83;
  protected transient Short Short84;
  protected transient Short Short85;
  protected transient Short Short86;
  protected final Short Short87 = Short.valueOf((short) 5);
  protected volatile Short Short88;
  protected volatile Short Short89;
  protected volatile Short Short90;
  protected volatile Short Short91;
  protected volatile Short Short92;
  protected volatile Short Short93;
  protected volatile Short Short94;
  protected volatile Short Short95;
  protected static transient Short Short96;
  protected static final Short Short97 = Short.valueOf((short) 5);
  protected static volatile Short Short98;
  protected final transient Short Short99 = Short.valueOf((short) 5);
  protected transient volatile Short Short100;
  protected transient volatile Short Short101;
  protected transient volatile Short Short102;
  protected transient volatile Short Short103;
  protected transient volatile Short Short104;
  protected transient volatile Short Short105;
  protected static final transient Short Short106 = Short.valueOf((short) 5);
  protected static transient volatile Short Short107;
  Short Short108;
  Short Short109;
  Short Short110;
  Short Short111;
  Short Short112;
  Short Short113;
  Short Short114;
  Short Short115;
  static Short Short116;
  transient Short Short117;
  transient Short Short118;
  transient Short Short119;
  transient Short Short120;
  transient Short Short121;
  transient Short Short122;
  final Short Short123 = Short.valueOf((short) 5);
  volatile Short Short124;
  volatile Short Short125;
  volatile Short Short126;
  volatile Short Short127;
  volatile Short Short128;
  volatile Short Short129;
  volatile Short Short130;
  volatile Short Short131;
  static transient Short Short132;
  static final Short Short133 = Short.valueOf((short) 5);
  static volatile Short Short134;
  final transient Short Short135 = Short.valueOf((short) 5);
  transient volatile Short Short136;
  transient volatile Short Short137;
  transient volatile Short Short138;
  transient volatile Short Short139;
  transient volatile Short Short140;
  transient volatile Short Short141;
  static final transient Short Short142 = Short.valueOf((short) 5);
  static transient volatile Short Short143;

  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 Short Short0",
    "embedded= true   private Short Short1",
    "embedded= false   private Short Short2",
    "persistence-modifier= none    private Short Short3",
    "persistence-modifier= persistent    private Short Short4",
    "persistence-modifier= persistent  embedded= true   private Short Short5",
    "persistence-modifier= persistent  embedded= false   private Short Short6",
    "persistence-modifier= transactional    private Short Short7",
    "private static Short Short8",
    "private transient Short Short9",
    "persistence-modifier= none    private transient Short Short10",
    "persistence-modifier= persistent    private transient Short Short11",
    "persistence-modifier= persistent  embedded= true   private transient Short Short12",
    "persistence-modifier= persistent  embedded= false   private transient Short Short13",
    "persistence-modifier= transactional    private transient Short Short14",
    "private final Short Short15",
    "private volatile Short Short16",
    "embedded= true   private volatile Short Short17",
    "embedded= false   private volatile Short Short18",
    "persistence-modifier= none    private volatile Short Short19",
    "persistence-modifier= persistent    private volatile Short Short20",
    "persistence-modifier= persistent  embedded= true   private volatile Short Short21",
    "persistence-modifier= persistent  embedded= false   private volatile Short Short22",
    "persistence-modifier= transactional    private volatile Short Short23",
    "private static transient Short Short24",
    "private static final Short Short25",
    "private static volatile Short Short26",
    "private transient final Short Short27",
    "private transient volatile Short Short28",
    "persistence-modifier= none    private transient volatile Short Short29",
    "persistence-modifier= persistent    private transient volatile Short Short30",
    "persistence-modifier= persistent  embedded= true   private transient volatile Short Short31",
    "persistence-modifier= persistent  embedded= false   private transient volatile Short Short32",
    "persistence-modifier= transactional    private transient volatile Short Short33",
    "private static transient final Short Short34",
    "private static transient volatile Short Short35",
    "public Short Short36",
    "embedded= true   public Short Short37",
    "embedded= false   public Short Short38",
    "persistence-modifier= none    public Short Short39",
    "persistence-modifier= persistent    public Short Short40",
    "persistence-modifier= persistent  embedded= true   public Short Short41",
    "persistence-modifier= persistent  embedded= false   public Short Short42",
    "persistence-modifier= transactional    public Short Short43",
    "public static Short Short44",
    "public transient Short Short45",
    "persistence-modifier= none    public transient Short Short46",
    "persistence-modifier= persistent    public transient Short Short47",
    "persistence-modifier= persistent  embedded= true   public transient Short Short48",
    "persistence-modifier= persistent  embedded= false   public transient Short Short49",
    "persistence-modifier= transactional    public transient Short Short50",
    "public final Short Short51",
    "public volatile Short Short52",
    "embedded= true   public volatile Short Short53",
    "embedded= false   public volatile Short Short54",
    "persistence-modifier= none    public volatile Short Short55",
    "persistence-modifier= persistent    public volatile Short Short56",
    "persistence-modifier= persistent  embedded= true   public volatile Short Short57",
    "persistence-modifier= persistent  embedded= false   public volatile Short Short58",
    "persistence-modifier= transactional    public volatile Short Short59",
    "public static transient Short Short60",
    "public static final Short Short61",
    "public static volatile Short Short62",
    "public transient final Short Short63",
    "public transient volatile Short Short64",
    "persistence-modifier= none    public transient volatile Short Short65",
    "persistence-modifier= persistent    public transient volatile Short Short66",
    "persistence-modifier= persistent  embedded= true   public transient volatile Short Short67",
    "persistence-modifier= persistent  embedded= false   public transient volatile Short Short68",
    "persistence-modifier= transactional    public transient volatile Short Short69",
    "public static transient final Short Short70",
    "public static transient volatile Short Short71",
    "protected Short Short72",
    "embedded= true   protected Short Short73",
    "embedded= false   protected Short Short74",
    "persistence-modifier= none    protected Short Short75",
    "persistence-modifier= persistent    protected Short Short76",
    "persistence-modifier= persistent  embedded= true   protected Short Short77",
    "persistence-modifier= persistent  embedded= false   protected Short Short78",
    "persistence-modifier= transactional    protected Short Short79",
    "protected static Short Short80",
    "protected transient Short Short81",
    "persistence-modifier= none    protected transient Short Short82",
    "persistence-modifier= persistent    protected transient Short Short83",
    "persistence-modifier= persistent  embedded= true   protected transient Short Short84",
    "persistence-modifier= persistent  embedded= false   protected transient Short Short85",
    "persistence-modifier= transactional    protected transient Short Short86",
    "protected final Short Short87",
    "protected volatile Short Short88",
    "embedded= true   protected volatile Short Short89",
    "embedded= false   protected volatile Short Short90",
    "persistence-modifier= none    protected volatile Short Short91",
    "persistence-modifier= persistent    protected volatile Short Short92",
    "persistence-modifier= persistent  embedded= true   protected volatile Short Short93",
    "persistence-modifier= persistent  embedded= false   protected volatile Short Short94",
    "persistence-modifier= transactional    protected volatile Short Short95",
    "protected static transient Short Short96",
    "protected static final Short Short97",
    "protected static volatile Short Short98",
    "protected transient final Short Short99",
    "protected transient volatile Short Short100",
    "persistence-modifier= none    protected transient volatile Short Short101",
    "persistence-modifier= persistent    protected transient volatile Short Short102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile Short Short103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile Short Short104",
    "persistence-modifier= transactional    protected transient volatile Short Short105",
    "protected static transient final Short Short106",
    "protected static transient volatile Short Short107",
    "Short Short108",
    "embedded= true   Short Short109",
    "embedded= false   Short Short110",
    "persistence-modifier= none    Short Short111",
    "persistence-modifier= persistent    Short Short112",
    "persistence-modifier= persistent  embedded= true   Short Short113",
    "persistence-modifier= persistent  embedded= false   Short Short114",
    "persistence-modifier= transactional    Short Short115",
    "static Short Short116",
    "transient Short Short117",
    "persistence-modifier= none    transient Short Short118",
    "persistence-modifier= persistent    transient Short Short119",
    "persistence-modifier= persistent  embedded= true   transient Short Short120",
    "persistence-modifier= persistent  embedded= false   transient Short Short121",
    "persistence-modifier= transactional    transient Short Short122",
    "final Short Short123",
    "volatile Short Short124",
    "embedded= true   volatile Short Short125",
    "embedded= false   volatile Short Short126",
    "persistence-modifier= none    volatile Short Short127",
    "persistence-modifier= persistent    volatile Short Short128",
    "persistence-modifier= persistent  embedded= true   volatile Short Short129",
    "persistence-modifier= persistent  embedded= false   volatile Short Short130",
    "persistence-modifier= transactional    volatile Short Short131",
    "static transient Short Short132",
    "static final Short Short133",
    "static volatile Short Short134",
    "transient final Short Short135",
    "transient volatile Short Short136",
    "persistence-modifier= none    transient volatile Short Short137",
    "persistence-modifier= persistent    transient volatile Short Short138",
    "persistence-modifier= persistent  embedded= true   transient volatile Short Short139",
    "persistence-modifier= persistent  embedded= false   transient volatile Short Short140",
    "persistence-modifier= transactional    transient volatile Short Short141",
    "static transient final Short Short142",
    "static transient volatile Short Short143"
  };

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

  public Short get(int index) {
    switch (index) {
      case (0):
        return Short0;
      case (1):
        return Short1;
      case (2):
        return Short2;
      case (3):
        return Short3;
      case (4):
        return Short4;
      case (5):
        return Short5;
      case (6):
        return Short6;
      case (7):
        return Short7;
      case (8):
        return Short8;
      case (9):
        return Short9;
      case (10):
        return Short10;
      case (11):
        return Short11;
      case (12):
        return Short12;
      case (13):
        return Short13;
      case (14):
        return Short14;
      case (15):
        return Short15;
      case (16):
        return Short16;
      case (17):
        return Short17;
      case (18):
        return Short18;
      case (19):
        return Short19;
      case (20):
        return Short20;
      case (21):
        return Short21;
      case (22):
        return Short22;
      case (23):
        return Short23;
      case (24):
        return Short24;
      case (25):
        return Short25;
      case (26):
        return Short26;
      case (27):
        return Short27;
      case (28):
        return Short28;
      case (29):
        return Short29;
      case (30):
        return Short30;
      case (31):
        return Short31;
      case (32):
        return Short32;
      case (33):
        return Short33;
      case (34):
        return Short34;
      case (35):
        return Short35;
      case (36):
        return Short36;
      case (37):
        return Short37;
      case (38):
        return Short38;
      case (39):
        return Short39;
      case (40):
        return Short40;
      case (41):
        return Short41;
      case (42):
        return Short42;
      case (43):
        return Short43;
      case (44):
        return Short44;
      case (45):
        return Short45;
      case (46):
        return Short46;
      case (47):
        return Short47;
      case (48):
        return Short48;
      case (49):
        return Short49;
      case (50):
        return Short50;
      case (51):
        return Short51;
      case (52):
        return Short52;
      case (53):
        return Short53;
      case (54):
        return Short54;
      case (55):
        return Short55;
      case (56):
        return Short56;
      case (57):
        return Short57;
      case (58):
        return Short58;
      case (59):
        return Short59;
      case (60):
        return Short60;
      case (61):
        return Short61;
      case (62):
        return Short62;
      case (63):
        return Short63;
      case (64):
        return Short64;
      case (65):
        return Short65;
      case (66):
        return Short66;
      case (67):
        return Short67;
      case (68):
        return Short68;
      case (69):
        return Short69;
      case (70):
        return Short70;
      case (71):
        return Short71;
      case (72):
        return Short72;
      case (73):
        return Short73;
      case (74):
        return Short74;
      case (75):
        return Short75;
      case (76):
        return Short76;
      case (77):
        return Short77;
      case (78):
        return Short78;
      case (79):
        return Short79;
      case (80):
        return Short80;
      case (81):
        return Short81;
      case (82):
        return Short82;
      case (83):
        return Short83;
      case (84):
        return Short84;
      case (85):
        return Short85;
      case (86):
        return Short86;
      case (87):
        return Short87;
      case (88):
        return Short88;
      case (89):
        return Short89;
      case (90):
        return Short90;
      case (91):
        return Short91;
      case (92):
        return Short92;
      case (93):
        return Short93;
      case (94):
        return Short94;
      case (95):
        return Short95;
      case (96):
        return Short96;
      case (97):
        return Short97;
      case (98):
        return Short98;
      case (99):
        return Short99;
      case (100):
        return Short100;
      case (101):
        return Short101;
      case (102):
        return Short102;
      case (103):
        return Short103;
      case (104):
        return Short104;
      case (105):
        return Short105;
      case (106):
        return Short106;
      case (107):
        return Short107;
      case (108):
        return Short108;
      case (109):
        return Short109;
      case (110):
        return Short110;
      case (111):
        return Short111;
      case (112):
        return Short112;
      case (113):
        return Short113;
      case (114):
        return Short114;
      case (115):
        return Short115;
      case (116):
        return Short116;
      case (117):
        return Short117;
      case (118):
        return Short118;
      case (119):
        return Short119;
      case (120):
        return Short120;
      case (121):
        return Short121;
      case (122):
        return Short122;
      case (123):
        return Short123;
      case (124):
        return Short124;
      case (125):
        return Short125;
      case (126):
        return Short126;
      case (127):
        return Short127;
      case (128):
        return Short128;
      case (129):
        return Short129;
      case (130):
        return Short130;
      case (131):
        return Short131;
      case (132):
        return Short132;
      case (133):
        return Short133;
      case (134):
        return Short134;
      case (135):
        return Short135;
      case (136):
        return Short136;
      case (137):
        return Short137;
      case (138):
        return Short138;
      case (139):
        return Short139;
      case (140):
        return Short140;
      case (141):
        return Short141;
      case (142):
        return Short142;
      case (143):
        return Short143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, Short value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        Short0 = value;
        break;
      case (1):
        Short1 = value;
        break;
      case (2):
        Short2 = value;
        break;
      case (3):
        Short3 = value;
        break;
      case (4):
        Short4 = value;
        break;
      case (5):
        Short5 = value;
        break;
      case (6):
        Short6 = value;
        break;
      case (7):
        Short7 = value;
        break;
      case (8):
        Short8 = value;
        break;
      case (9):
        Short9 = value;
        break;
      case (10):
        Short10 = value;
        break;
      case (11):
        Short11 = value;
        break;
      case (12):
        Short12 = value;
        break;
      case (13):
        Short13 = value;
        break;
      case (14):
        Short14 = value;
        break;
      case (16):
        Short16 = value;
        break;
      case (17):
        Short17 = value;
        break;
      case (18):
        Short18 = value;
        break;
      case (19):
        Short19 = value;
        break;
      case (20):
        Short20 = value;
        break;
      case (21):
        Short21 = value;
        break;
      case (22):
        Short22 = value;
        break;
      case (23):
        Short23 = value;
        break;
      case (24):
        Short24 = value;
        break;
      case (26):
        Short26 = value;
        break;
      case (28):
        Short28 = value;
        break;
      case (29):
        Short29 = value;
        break;
      case (30):
        Short30 = value;
        break;
      case (31):
        Short31 = value;
        break;
      case (32):
        Short32 = value;
        break;
      case (33):
        Short33 = value;
        break;
      case (35):
        Short35 = value;
        break;
      case (36):
        Short36 = value;
        break;
      case (37):
        Short37 = value;
        break;
      case (38):
        Short38 = value;
        break;
      case (39):
        Short39 = value;
        break;
      case (40):
        Short40 = value;
        break;
      case (41):
        Short41 = value;
        break;
      case (42):
        Short42 = value;
        break;
      case (43):
        Short43 = value;
        break;
      case (44):
        Short44 = value;
        break;
      case (45):
        Short45 = value;
        break;
      case (46):
        Short46 = value;
        break;
      case (47):
        Short47 = value;
        break;
      case (48):
        Short48 = value;
        break;
      case (49):
        Short49 = value;
        break;
      case (50):
        Short50 = value;
        break;
      case (52):
        Short52 = value;
        break;
      case (53):
        Short53 = value;
        break;
      case (54):
        Short54 = value;
        break;
      case (55):
        Short55 = value;
        break;
      case (56):
        Short56 = value;
        break;
      case (57):
        Short57 = value;
        break;
      case (58):
        Short58 = value;
        break;
      case (59):
        Short59 = value;
        break;
      case (60):
        Short60 = value;
        break;
      case (62):
        Short62 = value;
        break;
      case (64):
        Short64 = value;
        break;
      case (65):
        Short65 = value;
        break;
      case (66):
        Short66 = value;
        break;
      case (67):
        Short67 = value;
        break;
      case (68):
        Short68 = value;
        break;
      case (69):
        Short69 = value;
        break;
      case (71):
        Short71 = value;
        break;
      case (72):
        Short72 = value;
        break;
      case (73):
        Short73 = value;
        break;
      case (74):
        Short74 = value;
        break;
      case (75):
        Short75 = value;
        break;
      case (76):
        Short76 = value;
        break;
      case (77):
        Short77 = value;
        break;
      case (78):
        Short78 = value;
        break;
      case (79):
        Short79 = value;
        break;
      case (80):
        Short80 = value;
        break;
      case (81):
        Short81 = value;
        break;
      case (82):
        Short82 = value;
        break;
      case (83):
        Short83 = value;
        break;
      case (84):
        Short84 = value;
        break;
      case (85):
        Short85 = value;
        break;
      case (86):
        Short86 = value;
        break;
      case (88):
        Short88 = value;
        break;
      case (89):
        Short89 = value;
        break;
      case (90):
        Short90 = value;
        break;
      case (91):
        Short91 = value;
        break;
      case (92):
        Short92 = value;
        break;
      case (93):
        Short93 = value;
        break;
      case (94):
        Short94 = value;
        break;
      case (95):
        Short95 = value;
        break;
      case (96):
        Short96 = value;
        break;
      case (98):
        Short98 = value;
        break;
      case (100):
        Short100 = value;
        break;
      case (101):
        Short101 = value;
        break;
      case (102):
        Short102 = value;
        break;
      case (103):
        Short103 = value;
        break;
      case (104):
        Short104 = value;
        break;
      case (105):
        Short105 = value;
        break;
      case (107):
        Short107 = value;
        break;
      case (108):
        Short108 = value;
        break;
      case (109):
        Short109 = value;
        break;
      case (110):
        Short110 = value;
        break;
      case (111):
        Short111 = value;
        break;
      case (112):
        Short112 = value;
        break;
      case (113):
        Short113 = value;
        break;
      case (114):
        Short114 = value;
        break;
      case (115):
        Short115 = value;
        break;
      case (116):
        Short116 = value;
        break;
      case (117):
        Short117 = value;
        break;
      case (118):
        Short118 = value;
        break;
      case (119):
        Short119 = value;
        break;
      case (120):
        Short120 = value;
        break;
      case (121):
        Short121 = value;
        break;
      case (122):
        Short122 = value;
        break;
      case (124):
        Short124 = value;
        break;
      case (125):
        Short125 = value;
        break;
      case (126):
        Short126 = value;
        break;
      case (127):
        Short127 = value;
        break;
      case (128):
        Short128 = value;
        break;
      case (129):
        Short129 = value;
        break;
      case (130):
        Short130 = value;
        break;
      case (131):
        Short131 = value;
        break;
      case (132):
        Short132 = value;
        break;
      case (134):
        Short134 = value;
        break;
      case (136):
        Short136 = value;
        break;
      case (137):
        Short137 = value;
        break;
      case (138):
        Short138 = value;
        break;
      case (139):
        Short139 = value;
        break;
      case (140):
        Short140 = value;
        break;
      case (141):
        Short141 = value;
        break;
      case (143):
        Short143 = 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);
    }
  }
}
