/*
 * 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;
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);
    }
  }
}
