/*
 * 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
 *
 *     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
 * limitations under the License.
 */

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

import java.io.Serializable;
import java.math.BigInteger;

public class FieldsOfBigInteger {
  public int identifier;
  private BigInteger BigInteger0;
  private BigInteger BigInteger1;
  private BigInteger BigInteger2;
  private BigInteger BigInteger3;
  private BigInteger BigInteger4;
  private BigInteger BigInteger5;
  private BigInteger BigInteger6;
  private BigInteger BigInteger7;
  private static BigInteger BigInteger8;
  private transient BigInteger BigInteger9;
  private transient BigInteger BigInteger10;
  private transient BigInteger BigInteger11;
  private transient BigInteger BigInteger12;
  private transient BigInteger BigInteger13;
  private transient BigInteger BigInteger14;
  private final BigInteger BigInteger15 = new BigInteger("100");
  private volatile BigInteger BigInteger16;
  private volatile BigInteger BigInteger17;
  private volatile BigInteger BigInteger18;
  private volatile BigInteger BigInteger19;
  private volatile BigInteger BigInteger20;
  private volatile BigInteger BigInteger21;
  private volatile BigInteger BigInteger22;
  private volatile BigInteger BigInteger23;
  private static transient BigInteger BigInteger24;
  private static final BigInteger BigInteger25 = new BigInteger("100");
  private static volatile BigInteger BigInteger26;
  private final transient BigInteger BigInteger27 = new BigInteger("100");
  private transient volatile BigInteger BigInteger28;
  private transient volatile BigInteger BigInteger29;
  private transient volatile BigInteger BigInteger30;
  private transient volatile BigInteger BigInteger31;
  private transient volatile BigInteger BigInteger32;
  private transient volatile BigInteger BigInteger33;
  private static final transient BigInteger BigInteger34 = new BigInteger("100");
  private static transient volatile BigInteger BigInteger35;
  public BigInteger BigInteger36;
  public BigInteger BigInteger37;
  public BigInteger BigInteger38;
  public BigInteger BigInteger39;
  public BigInteger BigInteger40;
  public BigInteger BigInteger41;
  public BigInteger BigInteger42;
  public BigInteger BigInteger43;
  public static BigInteger BigInteger44;
  public transient BigInteger BigInteger45;
  public transient BigInteger BigInteger46;
  public transient BigInteger BigInteger47;
  public transient BigInteger BigInteger48;
  public transient BigInteger BigInteger49;
  public transient BigInteger BigInteger50;
  public final BigInteger BigInteger51 = new BigInteger("100");
  public volatile BigInteger BigInteger52;
  public volatile BigInteger BigInteger53;
  public volatile BigInteger BigInteger54;
  public volatile BigInteger BigInteger55;
  public volatile BigInteger BigInteger56;
  public volatile BigInteger BigInteger57;
  public volatile BigInteger BigInteger58;
  public volatile BigInteger BigInteger59;
  public static transient BigInteger BigInteger60;
  public static final BigInteger BigInteger61 = new BigInteger("100");
  public static volatile BigInteger BigInteger62;
  public final transient BigInteger BigInteger63 = new BigInteger("100");
  public transient volatile BigInteger BigInteger64;
  public transient volatile BigInteger BigInteger65;
  public transient volatile BigInteger BigInteger66;
  public transient volatile BigInteger BigInteger67;
  public transient volatile BigInteger BigInteger68;
  public transient volatile BigInteger BigInteger69;
  public static final transient BigInteger BigInteger70 = new BigInteger("100");
  public static transient volatile BigInteger BigInteger71;
  protected BigInteger BigInteger72;
  protected BigInteger BigInteger73;
  protected BigInteger BigInteger74;
  protected BigInteger BigInteger75;
  protected BigInteger BigInteger76;
  protected BigInteger BigInteger77;
  protected BigInteger BigInteger78;
  protected BigInteger BigInteger79;
  protected static BigInteger BigInteger80;
  protected transient BigInteger BigInteger81;
  protected transient BigInteger BigInteger82;
  protected transient BigInteger BigInteger83;
  protected transient BigInteger BigInteger84;
  protected transient BigInteger BigInteger85;
  protected transient BigInteger BigInteger86;
  protected final BigInteger BigInteger87 = new BigInteger("100");
  protected volatile BigInteger BigInteger88;
  protected volatile BigInteger BigInteger89;
  protected volatile BigInteger BigInteger90;
  protected volatile BigInteger BigInteger91;
  protected volatile BigInteger BigInteger92;
  protected volatile BigInteger BigInteger93;
  protected volatile BigInteger BigInteger94;
  protected volatile BigInteger BigInteger95;
  protected static transient BigInteger BigInteger96;
  protected static final BigInteger BigInteger97 = new BigInteger("100");
  protected static volatile BigInteger BigInteger98;
  protected final transient BigInteger BigInteger99 = new BigInteger("100");
  protected transient volatile BigInteger BigInteger100;
  protected transient volatile BigInteger BigInteger101;
  protected transient volatile BigInteger BigInteger102;
  protected transient volatile BigInteger BigInteger103;
  protected transient volatile BigInteger BigInteger104;
  protected transient volatile BigInteger BigInteger105;
  protected static final transient BigInteger BigInteger106 = new BigInteger("100");
  protected static transient volatile BigInteger BigInteger107;
  BigInteger BigInteger108;
  BigInteger BigInteger109;
  BigInteger BigInteger110;
  BigInteger BigInteger111;
  BigInteger BigInteger112;
  BigInteger BigInteger113;
  BigInteger BigInteger114;
  BigInteger BigInteger115;
  static BigInteger BigInteger116;
  transient BigInteger BigInteger117;
  transient BigInteger BigInteger118;
  transient BigInteger BigInteger119;
  transient BigInteger BigInteger120;
  transient BigInteger BigInteger121;
  transient BigInteger BigInteger122;
  final BigInteger BigInteger123 = new BigInteger("100");
  volatile BigInteger BigInteger124;
  volatile BigInteger BigInteger125;
  volatile BigInteger BigInteger126;
  volatile BigInteger BigInteger127;
  volatile BigInteger BigInteger128;
  volatile BigInteger BigInteger129;
  volatile BigInteger BigInteger130;
  volatile BigInteger BigInteger131;
  static transient BigInteger BigInteger132;
  static final BigInteger BigInteger133 = new BigInteger("100");
  static volatile BigInteger BigInteger134;
  final transient BigInteger BigInteger135 = new BigInteger("100");
  transient volatile BigInteger BigInteger136;
  transient volatile BigInteger BigInteger137;
  transient volatile BigInteger BigInteger138;
  transient volatile BigInteger BigInteger139;
  transient volatile BigInteger BigInteger140;
  transient volatile BigInteger BigInteger141;
  static final transient BigInteger BigInteger142 = new BigInteger("100");
  static transient volatile BigInteger BigInteger143;

  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 BigInteger BigInteger0",
    "embedded= true   private BigInteger BigInteger1",
    "embedded= false   private BigInteger BigInteger2",
    "persistence-modifier= none    private BigInteger BigInteger3",
    "persistence-modifier= persistent    private BigInteger BigInteger4",
    "persistence-modifier= persistent  embedded= true   private BigInteger BigInteger5",
    "persistence-modifier= persistent  embedded= false   private BigInteger BigInteger6",
    "persistence-modifier= transactional    private BigInteger BigInteger7",
    "private static BigInteger BigInteger8",
    "private transient BigInteger BigInteger9",
    "persistence-modifier= none    private transient BigInteger BigInteger10",
    "persistence-modifier= persistent    private transient BigInteger BigInteger11",
    "persistence-modifier= persistent  embedded= true   private transient BigInteger BigInteger12",
    "persistence-modifier= persistent  embedded= false   private transient BigInteger BigInteger13",
    "persistence-modifier= transactional    private transient BigInteger BigInteger14",
    "private final BigInteger BigInteger15",
    "private volatile BigInteger BigInteger16",
    "embedded= true   private volatile BigInteger BigInteger17",
    "embedded= false   private volatile BigInteger BigInteger18",
    "persistence-modifier= none    private volatile BigInteger BigInteger19",
    "persistence-modifier= persistent    private volatile BigInteger BigInteger20",
    "persistence-modifier= persistent  embedded= true   private volatile BigInteger BigInteger21",
    "persistence-modifier= persistent  embedded= false   private volatile BigInteger BigInteger22",
    "persistence-modifier= transactional    private volatile BigInteger BigInteger23",
    "private static transient BigInteger BigInteger24",
    "private static final BigInteger BigInteger25",
    "private static volatile BigInteger BigInteger26",
    "private transient final BigInteger BigInteger27",
    "private transient volatile BigInteger BigInteger28",
    "persistence-modifier= none    private transient volatile BigInteger BigInteger29",
    "persistence-modifier= persistent    private transient volatile BigInteger BigInteger30",
    "persistence-modifier= persistent  embedded= true   private transient volatile BigInteger BigInteger31",
    "persistence-modifier= persistent  embedded= false   private transient volatile BigInteger BigInteger32",
    "persistence-modifier= transactional    private transient volatile BigInteger BigInteger33",
    "private static transient final BigInteger BigInteger34",
    "private static transient volatile BigInteger BigInteger35",
    "public BigInteger BigInteger36",
    "embedded= true   public BigInteger BigInteger37",
    "embedded= false   public BigInteger BigInteger38",
    "persistence-modifier= none    public BigInteger BigInteger39",
    "persistence-modifier= persistent    public BigInteger BigInteger40",
    "persistence-modifier= persistent  embedded= true   public BigInteger BigInteger41",
    "persistence-modifier= persistent  embedded= false   public BigInteger BigInteger42",
    "persistence-modifier= transactional    public BigInteger BigInteger43",
    "public static BigInteger BigInteger44",
    "public transient BigInteger BigInteger45",
    "persistence-modifier= none    public transient BigInteger BigInteger46",
    "persistence-modifier= persistent    public transient BigInteger BigInteger47",
    "persistence-modifier= persistent  embedded= true   public transient BigInteger BigInteger48",
    "persistence-modifier= persistent  embedded= false   public transient BigInteger BigInteger49",
    "persistence-modifier= transactional    public transient BigInteger BigInteger50",
    "public final BigInteger BigInteger51",
    "public volatile BigInteger BigInteger52",
    "embedded= true   public volatile BigInteger BigInteger53",
    "embedded= false   public volatile BigInteger BigInteger54",
    "persistence-modifier= none    public volatile BigInteger BigInteger55",
    "persistence-modifier= persistent    public volatile BigInteger BigInteger56",
    "persistence-modifier= persistent  embedded= true   public volatile BigInteger BigInteger57",
    "persistence-modifier= persistent  embedded= false   public volatile BigInteger BigInteger58",
    "persistence-modifier= transactional    public volatile BigInteger BigInteger59",
    "public static transient BigInteger BigInteger60",
    "public static final BigInteger BigInteger61",
    "public static volatile BigInteger BigInteger62",
    "public transient final BigInteger BigInteger63",
    "public transient volatile BigInteger BigInteger64",
    "persistence-modifier= none    public transient volatile BigInteger BigInteger65",
    "persistence-modifier= persistent    public transient volatile BigInteger BigInteger66",
    "persistence-modifier= persistent  embedded= true   public transient volatile BigInteger BigInteger67",
    "persistence-modifier= persistent  embedded= false   public transient volatile BigInteger BigInteger68",
    "persistence-modifier= transactional    public transient volatile BigInteger BigInteger69",
    "public static transient final BigInteger BigInteger70",
    "public static transient volatile BigInteger BigInteger71",
    "protected BigInteger BigInteger72",
    "embedded= true   protected BigInteger BigInteger73",
    "embedded= false   protected BigInteger BigInteger74",
    "persistence-modifier= none    protected BigInteger BigInteger75",
    "persistence-modifier= persistent    protected BigInteger BigInteger76",
    "persistence-modifier= persistent  embedded= true   protected BigInteger BigInteger77",
    "persistence-modifier= persistent  embedded= false   protected BigInteger BigInteger78",
    "persistence-modifier= transactional    protected BigInteger BigInteger79",
    "protected static BigInteger BigInteger80",
    "protected transient BigInteger BigInteger81",
    "persistence-modifier= none    protected transient BigInteger BigInteger82",
    "persistence-modifier= persistent    protected transient BigInteger BigInteger83",
    "persistence-modifier= persistent  embedded= true   protected transient BigInteger BigInteger84",
    "persistence-modifier= persistent  embedded= false   protected transient BigInteger BigInteger85",
    "persistence-modifier= transactional    protected transient BigInteger BigInteger86",
    "protected final BigInteger BigInteger87",
    "protected volatile BigInteger BigInteger88",
    "embedded= true   protected volatile BigInteger BigInteger89",
    "embedded= false   protected volatile BigInteger BigInteger90",
    "persistence-modifier= none    protected volatile BigInteger BigInteger91",
    "persistence-modifier= persistent    protected volatile BigInteger BigInteger92",
    "persistence-modifier= persistent  embedded= true   protected volatile BigInteger BigInteger93",
    "persistence-modifier= persistent  embedded= false   protected volatile BigInteger BigInteger94",
    "persistence-modifier= transactional    protected volatile BigInteger BigInteger95",
    "protected static transient BigInteger BigInteger96",
    "protected static final BigInteger BigInteger97",
    "protected static volatile BigInteger BigInteger98",
    "protected transient final BigInteger BigInteger99",
    "protected transient volatile BigInteger BigInteger100",
    "persistence-modifier= none    protected transient volatile BigInteger BigInteger101",
    "persistence-modifier= persistent    protected transient volatile BigInteger BigInteger102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile BigInteger BigInteger103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile BigInteger BigInteger104",
    "persistence-modifier= transactional    protected transient volatile BigInteger BigInteger105",
    "protected static transient final BigInteger BigInteger106",
    "protected static transient volatile BigInteger BigInteger107",
    "BigInteger BigInteger108",
    "embedded= true   BigInteger BigInteger109",
    "embedded= false   BigInteger BigInteger110",
    "persistence-modifier= none    BigInteger BigInteger111",
    "persistence-modifier= persistent    BigInteger BigInteger112",
    "persistence-modifier= persistent  embedded= true   BigInteger BigInteger113",
    "persistence-modifier= persistent  embedded= false   BigInteger BigInteger114",
    "persistence-modifier= transactional    BigInteger BigInteger115",
    "static BigInteger BigInteger116",
    "transient BigInteger BigInteger117",
    "persistence-modifier= none    transient BigInteger BigInteger118",
    "persistence-modifier= persistent    transient BigInteger BigInteger119",
    "persistence-modifier= persistent  embedded= true   transient BigInteger BigInteger120",
    "persistence-modifier= persistent  embedded= false   transient BigInteger BigInteger121",
    "persistence-modifier= transactional    transient BigInteger BigInteger122",
    "final BigInteger BigInteger123",
    "volatile BigInteger BigInteger124",
    "embedded= true   volatile BigInteger BigInteger125",
    "embedded= false   volatile BigInteger BigInteger126",
    "persistence-modifier= none    volatile BigInteger BigInteger127",
    "persistence-modifier= persistent    volatile BigInteger BigInteger128",
    "persistence-modifier= persistent  embedded= true   volatile BigInteger BigInteger129",
    "persistence-modifier= persistent  embedded= false   volatile BigInteger BigInteger130",
    "persistence-modifier= transactional    volatile BigInteger BigInteger131",
    "static transient BigInteger BigInteger132",
    "static final BigInteger BigInteger133",
    "static volatile BigInteger BigInteger134",
    "transient final BigInteger BigInteger135",
    "transient volatile BigInteger BigInteger136",
    "persistence-modifier= none    transient volatile BigInteger BigInteger137",
    "persistence-modifier= persistent    transient volatile BigInteger BigInteger138",
    "persistence-modifier= persistent  embedded= true   transient volatile BigInteger BigInteger139",
    "persistence-modifier= persistent  embedded= false   transient volatile BigInteger BigInteger140",
    "persistence-modifier= transactional    transient volatile BigInteger BigInteger141",
    "static transient final BigInteger BigInteger142",
    "static transient volatile BigInteger BigInteger143"
  };

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

  public BigInteger get(int index) {
    switch (index) {
      case (0):
        return BigInteger0;
      case (1):
        return BigInteger1;
      case (2):
        return BigInteger2;
      case (3):
        return BigInteger3;
      case (4):
        return BigInteger4;
      case (5):
        return BigInteger5;
      case (6):
        return BigInteger6;
      case (7):
        return BigInteger7;
      case (8):
        return BigInteger8;
      case (9):
        return BigInteger9;
      case (10):
        return BigInteger10;
      case (11):
        return BigInteger11;
      case (12):
        return BigInteger12;
      case (13):
        return BigInteger13;
      case (14):
        return BigInteger14;
      case (15):
        return BigInteger15;
      case (16):
        return BigInteger16;
      case (17):
        return BigInteger17;
      case (18):
        return BigInteger18;
      case (19):
        return BigInteger19;
      case (20):
        return BigInteger20;
      case (21):
        return BigInteger21;
      case (22):
        return BigInteger22;
      case (23):
        return BigInteger23;
      case (24):
        return BigInteger24;
      case (25):
        return BigInteger25;
      case (26):
        return BigInteger26;
      case (27):
        return BigInteger27;
      case (28):
        return BigInteger28;
      case (29):
        return BigInteger29;
      case (30):
        return BigInteger30;
      case (31):
        return BigInteger31;
      case (32):
        return BigInteger32;
      case (33):
        return BigInteger33;
      case (34):
        return BigInteger34;
      case (35):
        return BigInteger35;
      case (36):
        return BigInteger36;
      case (37):
        return BigInteger37;
      case (38):
        return BigInteger38;
      case (39):
        return BigInteger39;
      case (40):
        return BigInteger40;
      case (41):
        return BigInteger41;
      case (42):
        return BigInteger42;
      case (43):
        return BigInteger43;
      case (44):
        return BigInteger44;
      case (45):
        return BigInteger45;
      case (46):
        return BigInteger46;
      case (47):
        return BigInteger47;
      case (48):
        return BigInteger48;
      case (49):
        return BigInteger49;
      case (50):
        return BigInteger50;
      case (51):
        return BigInteger51;
      case (52):
        return BigInteger52;
      case (53):
        return BigInteger53;
      case (54):
        return BigInteger54;
      case (55):
        return BigInteger55;
      case (56):
        return BigInteger56;
      case (57):
        return BigInteger57;
      case (58):
        return BigInteger58;
      case (59):
        return BigInteger59;
      case (60):
        return BigInteger60;
      case (61):
        return BigInteger61;
      case (62):
        return BigInteger62;
      case (63):
        return BigInteger63;
      case (64):
        return BigInteger64;
      case (65):
        return BigInteger65;
      case (66):
        return BigInteger66;
      case (67):
        return BigInteger67;
      case (68):
        return BigInteger68;
      case (69):
        return BigInteger69;
      case (70):
        return BigInteger70;
      case (71):
        return BigInteger71;
      case (72):
        return BigInteger72;
      case (73):
        return BigInteger73;
      case (74):
        return BigInteger74;
      case (75):
        return BigInteger75;
      case (76):
        return BigInteger76;
      case (77):
        return BigInteger77;
      case (78):
        return BigInteger78;
      case (79):
        return BigInteger79;
      case (80):
        return BigInteger80;
      case (81):
        return BigInteger81;
      case (82):
        return BigInteger82;
      case (83):
        return BigInteger83;
      case (84):
        return BigInteger84;
      case (85):
        return BigInteger85;
      case (86):
        return BigInteger86;
      case (87):
        return BigInteger87;
      case (88):
        return BigInteger88;
      case (89):
        return BigInteger89;
      case (90):
        return BigInteger90;
      case (91):
        return BigInteger91;
      case (92):
        return BigInteger92;
      case (93):
        return BigInteger93;
      case (94):
        return BigInteger94;
      case (95):
        return BigInteger95;
      case (96):
        return BigInteger96;
      case (97):
        return BigInteger97;
      case (98):
        return BigInteger98;
      case (99):
        return BigInteger99;
      case (100):
        return BigInteger100;
      case (101):
        return BigInteger101;
      case (102):
        return BigInteger102;
      case (103):
        return BigInteger103;
      case (104):
        return BigInteger104;
      case (105):
        return BigInteger105;
      case (106):
        return BigInteger106;
      case (107):
        return BigInteger107;
      case (108):
        return BigInteger108;
      case (109):
        return BigInteger109;
      case (110):
        return BigInteger110;
      case (111):
        return BigInteger111;
      case (112):
        return BigInteger112;
      case (113):
        return BigInteger113;
      case (114):
        return BigInteger114;
      case (115):
        return BigInteger115;
      case (116):
        return BigInteger116;
      case (117):
        return BigInteger117;
      case (118):
        return BigInteger118;
      case (119):
        return BigInteger119;
      case (120):
        return BigInteger120;
      case (121):
        return BigInteger121;
      case (122):
        return BigInteger122;
      case (123):
        return BigInteger123;
      case (124):
        return BigInteger124;
      case (125):
        return BigInteger125;
      case (126):
        return BigInteger126;
      case (127):
        return BigInteger127;
      case (128):
        return BigInteger128;
      case (129):
        return BigInteger129;
      case (130):
        return BigInteger130;
      case (131):
        return BigInteger131;
      case (132):
        return BigInteger132;
      case (133):
        return BigInteger133;
      case (134):
        return BigInteger134;
      case (135):
        return BigInteger135;
      case (136):
        return BigInteger136;
      case (137):
        return BigInteger137;
      case (138):
        return BigInteger138;
      case (139):
        return BigInteger139;
      case (140):
        return BigInteger140;
      case (141):
        return BigInteger141;
      case (142):
        return BigInteger142;
      case (143):
        return BigInteger143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, BigInteger value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        BigInteger0 = value;
        break;
      case (1):
        BigInteger1 = value;
        break;
      case (2):
        BigInteger2 = value;
        break;
      case (3):
        BigInteger3 = value;
        break;
      case (4):
        BigInteger4 = value;
        break;
      case (5):
        BigInteger5 = value;
        break;
      case (6):
        BigInteger6 = value;
        break;
      case (7):
        BigInteger7 = value;
        break;
      case (8):
        BigInteger8 = value;
        break;
      case (9):
        BigInteger9 = value;
        break;
      case (10):
        BigInteger10 = value;
        break;
      case (11):
        BigInteger11 = value;
        break;
      case (12):
        BigInteger12 = value;
        break;
      case (13):
        BigInteger13 = value;
        break;
      case (14):
        BigInteger14 = value;
        break;
      case (16):
        BigInteger16 = value;
        break;
      case (17):
        BigInteger17 = value;
        break;
      case (18):
        BigInteger18 = value;
        break;
      case (19):
        BigInteger19 = value;
        break;
      case (20):
        BigInteger20 = value;
        break;
      case (21):
        BigInteger21 = value;
        break;
      case (22):
        BigInteger22 = value;
        break;
      case (23):
        BigInteger23 = value;
        break;
      case (24):
        BigInteger24 = value;
        break;
      case (26):
        BigInteger26 = value;
        break;
      case (28):
        BigInteger28 = value;
        break;
      case (29):
        BigInteger29 = value;
        break;
      case (30):
        BigInteger30 = value;
        break;
      case (31):
        BigInteger31 = value;
        break;
      case (32):
        BigInteger32 = value;
        break;
      case (33):
        BigInteger33 = value;
        break;
      case (35):
        BigInteger35 = value;
        break;
      case (36):
        BigInteger36 = value;
        break;
      case (37):
        BigInteger37 = value;
        break;
      case (38):
        BigInteger38 = value;
        break;
      case (39):
        BigInteger39 = value;
        break;
      case (40):
        BigInteger40 = value;
        break;
      case (41):
        BigInteger41 = value;
        break;
      case (42):
        BigInteger42 = value;
        break;
      case (43):
        BigInteger43 = value;
        break;
      case (44):
        BigInteger44 = value;
        break;
      case (45):
        BigInteger45 = value;
        break;
      case (46):
        BigInteger46 = value;
        break;
      case (47):
        BigInteger47 = value;
        break;
      case (48):
        BigInteger48 = value;
        break;
      case (49):
        BigInteger49 = value;
        break;
      case (50):
        BigInteger50 = value;
        break;
      case (52):
        BigInteger52 = value;
        break;
      case (53):
        BigInteger53 = value;
        break;
      case (54):
        BigInteger54 = value;
        break;
      case (55):
        BigInteger55 = value;
        break;
      case (56):
        BigInteger56 = value;
        break;
      case (57):
        BigInteger57 = value;
        break;
      case (58):
        BigInteger58 = value;
        break;
      case (59):
        BigInteger59 = value;
        break;
      case (60):
        BigInteger60 = value;
        break;
      case (62):
        BigInteger62 = value;
        break;
      case (64):
        BigInteger64 = value;
        break;
      case (65):
        BigInteger65 = value;
        break;
      case (66):
        BigInteger66 = value;
        break;
      case (67):
        BigInteger67 = value;
        break;
      case (68):
        BigInteger68 = value;
        break;
      case (69):
        BigInteger69 = value;
        break;
      case (71):
        BigInteger71 = value;
        break;
      case (72):
        BigInteger72 = value;
        break;
      case (73):
        BigInteger73 = value;
        break;
      case (74):
        BigInteger74 = value;
        break;
      case (75):
        BigInteger75 = value;
        break;
      case (76):
        BigInteger76 = value;
        break;
      case (77):
        BigInteger77 = value;
        break;
      case (78):
        BigInteger78 = value;
        break;
      case (79):
        BigInteger79 = value;
        break;
      case (80):
        BigInteger80 = value;
        break;
      case (81):
        BigInteger81 = value;
        break;
      case (82):
        BigInteger82 = value;
        break;
      case (83):
        BigInteger83 = value;
        break;
      case (84):
        BigInteger84 = value;
        break;
      case (85):
        BigInteger85 = value;
        break;
      case (86):
        BigInteger86 = value;
        break;
      case (88):
        BigInteger88 = value;
        break;
      case (89):
        BigInteger89 = value;
        break;
      case (90):
        BigInteger90 = value;
        break;
      case (91):
        BigInteger91 = value;
        break;
      case (92):
        BigInteger92 = value;
        break;
      case (93):
        BigInteger93 = value;
        break;
      case (94):
        BigInteger94 = value;
        break;
      case (95):
        BigInteger95 = value;
        break;
      case (96):
        BigInteger96 = value;
        break;
      case (98):
        BigInteger98 = value;
        break;
      case (100):
        BigInteger100 = value;
        break;
      case (101):
        BigInteger101 = value;
        break;
      case (102):
        BigInteger102 = value;
        break;
      case (103):
        BigInteger103 = value;
        break;
      case (104):
        BigInteger104 = value;
        break;
      case (105):
        BigInteger105 = value;
        break;
      case (107):
        BigInteger107 = value;
        break;
      case (108):
        BigInteger108 = value;
        break;
      case (109):
        BigInteger109 = value;
        break;
      case (110):
        BigInteger110 = value;
        break;
      case (111):
        BigInteger111 = value;
        break;
      case (112):
        BigInteger112 = value;
        break;
      case (113):
        BigInteger113 = value;
        break;
      case (114):
        BigInteger114 = value;
        break;
      case (115):
        BigInteger115 = value;
        break;
      case (116):
        BigInteger116 = value;
        break;
      case (117):
        BigInteger117 = value;
        break;
      case (118):
        BigInteger118 = value;
        break;
      case (119):
        BigInteger119 = value;
        break;
      case (120):
        BigInteger120 = value;
        break;
      case (121):
        BigInteger121 = value;
        break;
      case (122):
        BigInteger122 = value;
        break;
      case (124):
        BigInteger124 = value;
        break;
      case (125):
        BigInteger125 = value;
        break;
      case (126):
        BigInteger126 = value;
        break;
      case (127):
        BigInteger127 = value;
        break;
      case (128):
        BigInteger128 = value;
        break;
      case (129):
        BigInteger129 = value;
        break;
      case (130):
        BigInteger130 = value;
        break;
      case (131):
        BigInteger131 = value;
        break;
      case (132):
        BigInteger132 = value;
        break;
      case (134):
        BigInteger134 = value;
        break;
      case (136):
        BigInteger136 = value;
        break;
      case (137):
        BigInteger137 = value;
        break;
      case (138):
        BigInteger138 = value;
        break;
      case (139):
        BigInteger139 = value;
        break;
      case (140):
        BigInteger140 = value;
        break;
      case (141):
        BigInteger141 = value;
        break;
      case (143):
        BigInteger143 = 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);
    }
  }
}
