/*
 * 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.BigDecimal;

public class FieldsOfBigDecimal {
  public int identifier;
  private BigDecimal BigDecimal0;
  private BigDecimal BigDecimal1;
  private BigDecimal BigDecimal2;
  private BigDecimal BigDecimal3;
  private BigDecimal BigDecimal4;
  private BigDecimal BigDecimal5;
  private BigDecimal BigDecimal6;
  private BigDecimal BigDecimal7;
  private static BigDecimal BigDecimal8;
  private transient BigDecimal BigDecimal9;
  private transient BigDecimal BigDecimal10;
  private transient BigDecimal BigDecimal11;
  private transient BigDecimal BigDecimal12;
  private transient BigDecimal BigDecimal13;
  private transient BigDecimal BigDecimal14;
  private final BigDecimal BigDecimal15 = new BigDecimal(100.15);
  private volatile BigDecimal BigDecimal16;
  private volatile BigDecimal BigDecimal17;
  private volatile BigDecimal BigDecimal18;
  private volatile BigDecimal BigDecimal19;
  private volatile BigDecimal BigDecimal20;
  private volatile BigDecimal BigDecimal21;
  private volatile BigDecimal BigDecimal22;
  private volatile BigDecimal BigDecimal23;
  private static transient BigDecimal BigDecimal24;
  private static final BigDecimal BigDecimal25 = new BigDecimal(100.15);
  private static volatile BigDecimal BigDecimal26;
  private final transient BigDecimal BigDecimal27 = new BigDecimal(100.15);
  private transient volatile BigDecimal BigDecimal28;
  private transient volatile BigDecimal BigDecimal29;
  private transient volatile BigDecimal BigDecimal30;
  private transient volatile BigDecimal BigDecimal31;
  private transient volatile BigDecimal BigDecimal32;
  private transient volatile BigDecimal BigDecimal33;
  private static final transient BigDecimal BigDecimal34 = new BigDecimal(100.15);
  private static transient volatile BigDecimal BigDecimal35;
  public BigDecimal BigDecimal36;
  public BigDecimal BigDecimal37;
  public BigDecimal BigDecimal38;
  public BigDecimal BigDecimal39;
  public BigDecimal BigDecimal40;
  public BigDecimal BigDecimal41;
  public BigDecimal BigDecimal42;
  public BigDecimal BigDecimal43;
  public static BigDecimal BigDecimal44;
  public transient BigDecimal BigDecimal45;
  public transient BigDecimal BigDecimal46;
  public transient BigDecimal BigDecimal47;
  public transient BigDecimal BigDecimal48;
  public transient BigDecimal BigDecimal49;
  public transient BigDecimal BigDecimal50;
  public final BigDecimal BigDecimal51 = new BigDecimal(100.15);
  public volatile BigDecimal BigDecimal52;
  public volatile BigDecimal BigDecimal53;
  public volatile BigDecimal BigDecimal54;
  public volatile BigDecimal BigDecimal55;
  public volatile BigDecimal BigDecimal56;
  public volatile BigDecimal BigDecimal57;
  public volatile BigDecimal BigDecimal58;
  public volatile BigDecimal BigDecimal59;
  public static transient BigDecimal BigDecimal60;
  public static final BigDecimal BigDecimal61 = new BigDecimal(100.15);
  public static volatile BigDecimal BigDecimal62;
  public final transient BigDecimal BigDecimal63 = new BigDecimal(100.15);
  public transient volatile BigDecimal BigDecimal64;
  public transient volatile BigDecimal BigDecimal65;
  public transient volatile BigDecimal BigDecimal66;
  public transient volatile BigDecimal BigDecimal67;
  public transient volatile BigDecimal BigDecimal68;
  public transient volatile BigDecimal BigDecimal69;
  public static final transient BigDecimal BigDecimal70 = new BigDecimal(100.15);
  public static transient volatile BigDecimal BigDecimal71;
  protected BigDecimal BigDecimal72;
  protected BigDecimal BigDecimal73;
  protected BigDecimal BigDecimal74;
  protected BigDecimal BigDecimal75;
  protected BigDecimal BigDecimal76;
  protected BigDecimal BigDecimal77;
  protected BigDecimal BigDecimal78;
  protected BigDecimal BigDecimal79;
  protected static BigDecimal BigDecimal80;
  protected transient BigDecimal BigDecimal81;
  protected transient BigDecimal BigDecimal82;
  protected transient BigDecimal BigDecimal83;
  protected transient BigDecimal BigDecimal84;
  protected transient BigDecimal BigDecimal85;
  protected transient BigDecimal BigDecimal86;
  protected final BigDecimal BigDecimal87 = new BigDecimal(100.15);
  protected volatile BigDecimal BigDecimal88;
  protected volatile BigDecimal BigDecimal89;
  protected volatile BigDecimal BigDecimal90;
  protected volatile BigDecimal BigDecimal91;
  protected volatile BigDecimal BigDecimal92;
  protected volatile BigDecimal BigDecimal93;
  protected volatile BigDecimal BigDecimal94;
  protected volatile BigDecimal BigDecimal95;
  protected static transient BigDecimal BigDecimal96;
  protected static final BigDecimal BigDecimal97 = new BigDecimal(100.15);
  protected static volatile BigDecimal BigDecimal98;
  protected final transient BigDecimal BigDecimal99 = new BigDecimal(100.15);
  protected transient volatile BigDecimal BigDecimal100;
  protected transient volatile BigDecimal BigDecimal101;
  protected transient volatile BigDecimal BigDecimal102;
  protected transient volatile BigDecimal BigDecimal103;
  protected transient volatile BigDecimal BigDecimal104;
  protected transient volatile BigDecimal BigDecimal105;
  protected static final transient BigDecimal BigDecimal106 = new BigDecimal(100.15);
  protected static transient volatile BigDecimal BigDecimal107;
  BigDecimal BigDecimal108;
  BigDecimal BigDecimal109;
  BigDecimal BigDecimal110;
  BigDecimal BigDecimal111;
  BigDecimal BigDecimal112;
  BigDecimal BigDecimal113;
  BigDecimal BigDecimal114;
  BigDecimal BigDecimal115;
  static BigDecimal BigDecimal116;
  transient BigDecimal BigDecimal117;
  transient BigDecimal BigDecimal118;
  transient BigDecimal BigDecimal119;
  transient BigDecimal BigDecimal120;
  transient BigDecimal BigDecimal121;
  transient BigDecimal BigDecimal122;
  final BigDecimal BigDecimal123 = new BigDecimal(100.15);
  volatile BigDecimal BigDecimal124;
  volatile BigDecimal BigDecimal125;
  volatile BigDecimal BigDecimal126;
  volatile BigDecimal BigDecimal127;
  volatile BigDecimal BigDecimal128;
  volatile BigDecimal BigDecimal129;
  volatile BigDecimal BigDecimal130;
  volatile BigDecimal BigDecimal131;
  static transient BigDecimal BigDecimal132;
  static final BigDecimal BigDecimal133 = new BigDecimal(100.15);
  static volatile BigDecimal BigDecimal134;
  final transient BigDecimal BigDecimal135 = new BigDecimal(100.15);
  transient volatile BigDecimal BigDecimal136;
  transient volatile BigDecimal BigDecimal137;
  transient volatile BigDecimal BigDecimal138;
  transient volatile BigDecimal BigDecimal139;
  transient volatile BigDecimal BigDecimal140;
  transient volatile BigDecimal BigDecimal141;
  static final transient BigDecimal BigDecimal142 = new BigDecimal(100.15);
  static transient volatile BigDecimal BigDecimal143;

  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 BigDecimal BigDecimal0",
    "embedded= true   private BigDecimal BigDecimal1",
    "embedded= false   private BigDecimal BigDecimal2",
    "persistence-modifier= none    private BigDecimal BigDecimal3",
    "persistence-modifier= persistent    private BigDecimal BigDecimal4",
    "persistence-modifier= persistent  embedded= true   private BigDecimal BigDecimal5",
    "persistence-modifier= persistent  embedded= false   private BigDecimal BigDecimal6",
    "persistence-modifier= transactional    private BigDecimal BigDecimal7",
    "private static BigDecimal BigDecimal8",
    "private transient BigDecimal BigDecimal9",
    "persistence-modifier= none    private transient BigDecimal BigDecimal10",
    "persistence-modifier= persistent    private transient BigDecimal BigDecimal11",
    "persistence-modifier= persistent  embedded= true   private transient BigDecimal BigDecimal12",
    "persistence-modifier= persistent  embedded= false   private transient BigDecimal BigDecimal13",
    "persistence-modifier= transactional    private transient BigDecimal BigDecimal14",
    "private final BigDecimal BigDecimal15",
    "private volatile BigDecimal BigDecimal16",
    "embedded= true   private volatile BigDecimal BigDecimal17",
    "embedded= false   private volatile BigDecimal BigDecimal18",
    "persistence-modifier= none    private volatile BigDecimal BigDecimal19",
    "persistence-modifier= persistent    private volatile BigDecimal BigDecimal20",
    "persistence-modifier= persistent  embedded= true   private volatile BigDecimal BigDecimal21",
    "persistence-modifier= persistent  embedded= false   private volatile BigDecimal BigDecimal22",
    "persistence-modifier= transactional    private volatile BigDecimal BigDecimal23",
    "private static transient BigDecimal BigDecimal24",
    "private static final BigDecimal BigDecimal25",
    "private static volatile BigDecimal BigDecimal26",
    "private transient final BigDecimal BigDecimal27",
    "private transient volatile BigDecimal BigDecimal28",
    "persistence-modifier= none    private transient volatile BigDecimal BigDecimal29",
    "persistence-modifier= persistent    private transient volatile BigDecimal BigDecimal30",
    "persistence-modifier= persistent  embedded= true   private transient volatile BigDecimal BigDecimal31",
    "persistence-modifier= persistent  embedded= false   private transient volatile BigDecimal BigDecimal32",
    "persistence-modifier= transactional    private transient volatile BigDecimal BigDecimal33",
    "private static transient final BigDecimal BigDecimal34",
    "private static transient volatile BigDecimal BigDecimal35",
    "public BigDecimal BigDecimal36",
    "embedded= true   public BigDecimal BigDecimal37",
    "embedded= false   public BigDecimal BigDecimal38",
    "persistence-modifier= none    public BigDecimal BigDecimal39",
    "persistence-modifier= persistent    public BigDecimal BigDecimal40",
    "persistence-modifier= persistent  embedded= true   public BigDecimal BigDecimal41",
    "persistence-modifier= persistent  embedded= false   public BigDecimal BigDecimal42",
    "persistence-modifier= transactional    public BigDecimal BigDecimal43",
    "public static BigDecimal BigDecimal44",
    "public transient BigDecimal BigDecimal45",
    "persistence-modifier= none    public transient BigDecimal BigDecimal46",
    "persistence-modifier= persistent    public transient BigDecimal BigDecimal47",
    "persistence-modifier= persistent  embedded= true   public transient BigDecimal BigDecimal48",
    "persistence-modifier= persistent  embedded= false   public transient BigDecimal BigDecimal49",
    "persistence-modifier= transactional    public transient BigDecimal BigDecimal50",
    "public final BigDecimal BigDecimal51",
    "public volatile BigDecimal BigDecimal52",
    "embedded= true   public volatile BigDecimal BigDecimal53",
    "embedded= false   public volatile BigDecimal BigDecimal54",
    "persistence-modifier= none    public volatile BigDecimal BigDecimal55",
    "persistence-modifier= persistent    public volatile BigDecimal BigDecimal56",
    "persistence-modifier= persistent  embedded= true   public volatile BigDecimal BigDecimal57",
    "persistence-modifier= persistent  embedded= false   public volatile BigDecimal BigDecimal58",
    "persistence-modifier= transactional    public volatile BigDecimal BigDecimal59",
    "public static transient BigDecimal BigDecimal60",
    "public static final BigDecimal BigDecimal61",
    "public static volatile BigDecimal BigDecimal62",
    "public transient final BigDecimal BigDecimal63",
    "public transient volatile BigDecimal BigDecimal64",
    "persistence-modifier= none    public transient volatile BigDecimal BigDecimal65",
    "persistence-modifier= persistent    public transient volatile BigDecimal BigDecimal66",
    "persistence-modifier= persistent  embedded= true   public transient volatile BigDecimal BigDecimal67",
    "persistence-modifier= persistent  embedded= false   public transient volatile BigDecimal BigDecimal68",
    "persistence-modifier= transactional    public transient volatile BigDecimal BigDecimal69",
    "public static transient final BigDecimal BigDecimal70",
    "public static transient volatile BigDecimal BigDecimal71",
    "protected BigDecimal BigDecimal72",
    "embedded= true   protected BigDecimal BigDecimal73",
    "embedded= false   protected BigDecimal BigDecimal74",
    "persistence-modifier= none    protected BigDecimal BigDecimal75",
    "persistence-modifier= persistent    protected BigDecimal BigDecimal76",
    "persistence-modifier= persistent  embedded= true   protected BigDecimal BigDecimal77",
    "persistence-modifier= persistent  embedded= false   protected BigDecimal BigDecimal78",
    "persistence-modifier= transactional    protected BigDecimal BigDecimal79",
    "protected static BigDecimal BigDecimal80",
    "protected transient BigDecimal BigDecimal81",
    "persistence-modifier= none    protected transient BigDecimal BigDecimal82",
    "persistence-modifier= persistent    protected transient BigDecimal BigDecimal83",
    "persistence-modifier= persistent  embedded= true   protected transient BigDecimal BigDecimal84",
    "persistence-modifier= persistent  embedded= false   protected transient BigDecimal BigDecimal85",
    "persistence-modifier= transactional    protected transient BigDecimal BigDecimal86",
    "protected final BigDecimal BigDecimal87",
    "protected volatile BigDecimal BigDecimal88",
    "embedded= true   protected volatile BigDecimal BigDecimal89",
    "embedded= false   protected volatile BigDecimal BigDecimal90",
    "persistence-modifier= none    protected volatile BigDecimal BigDecimal91",
    "persistence-modifier= persistent    protected volatile BigDecimal BigDecimal92",
    "persistence-modifier= persistent  embedded= true   protected volatile BigDecimal BigDecimal93",
    "persistence-modifier= persistent  embedded= false   protected volatile BigDecimal BigDecimal94",
    "persistence-modifier= transactional    protected volatile BigDecimal BigDecimal95",
    "protected static transient BigDecimal BigDecimal96",
    "protected static final BigDecimal BigDecimal97",
    "protected static volatile BigDecimal BigDecimal98",
    "protected transient final BigDecimal BigDecimal99",
    "protected transient volatile BigDecimal BigDecimal100",
    "persistence-modifier= none    protected transient volatile BigDecimal BigDecimal101",
    "persistence-modifier= persistent    protected transient volatile BigDecimal BigDecimal102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile BigDecimal BigDecimal103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile BigDecimal BigDecimal104",
    "persistence-modifier= transactional    protected transient volatile BigDecimal BigDecimal105",
    "protected static transient final BigDecimal BigDecimal106",
    "protected static transient volatile BigDecimal BigDecimal107",
    "BigDecimal BigDecimal108",
    "embedded= true   BigDecimal BigDecimal109",
    "embedded= false   BigDecimal BigDecimal110",
    "persistence-modifier= none    BigDecimal BigDecimal111",
    "persistence-modifier= persistent    BigDecimal BigDecimal112",
    "persistence-modifier= persistent  embedded= true   BigDecimal BigDecimal113",
    "persistence-modifier= persistent  embedded= false   BigDecimal BigDecimal114",
    "persistence-modifier= transactional    BigDecimal BigDecimal115",
    "static BigDecimal BigDecimal116",
    "transient BigDecimal BigDecimal117",
    "persistence-modifier= none    transient BigDecimal BigDecimal118",
    "persistence-modifier= persistent    transient BigDecimal BigDecimal119",
    "persistence-modifier= persistent  embedded= true   transient BigDecimal BigDecimal120",
    "persistence-modifier= persistent  embedded= false   transient BigDecimal BigDecimal121",
    "persistence-modifier= transactional    transient BigDecimal BigDecimal122",
    "final BigDecimal BigDecimal123",
    "volatile BigDecimal BigDecimal124",
    "embedded= true   volatile BigDecimal BigDecimal125",
    "embedded= false   volatile BigDecimal BigDecimal126",
    "persistence-modifier= none    volatile BigDecimal BigDecimal127",
    "persistence-modifier= persistent    volatile BigDecimal BigDecimal128",
    "persistence-modifier= persistent  embedded= true   volatile BigDecimal BigDecimal129",
    "persistence-modifier= persistent  embedded= false   volatile BigDecimal BigDecimal130",
    "persistence-modifier= transactional    volatile BigDecimal BigDecimal131",
    "static transient BigDecimal BigDecimal132",
    "static final BigDecimal BigDecimal133",
    "static volatile BigDecimal BigDecimal134",
    "transient final BigDecimal BigDecimal135",
    "transient volatile BigDecimal BigDecimal136",
    "persistence-modifier= none    transient volatile BigDecimal BigDecimal137",
    "persistence-modifier= persistent    transient volatile BigDecimal BigDecimal138",
    "persistence-modifier= persistent  embedded= true   transient volatile BigDecimal BigDecimal139",
    "persistence-modifier= persistent  embedded= false   transient volatile BigDecimal BigDecimal140",
    "persistence-modifier= transactional    transient volatile BigDecimal BigDecimal141",
    "static transient final BigDecimal BigDecimal142",
    "static transient volatile BigDecimal BigDecimal143"
  };

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

  public BigDecimal get(int index) {
    switch (index) {
      case (0):
        return BigDecimal0;
      case (1):
        return BigDecimal1;
      case (2):
        return BigDecimal2;
      case (3):
        return BigDecimal3;
      case (4):
        return BigDecimal4;
      case (5):
        return BigDecimal5;
      case (6):
        return BigDecimal6;
      case (7):
        return BigDecimal7;
      case (8):
        return BigDecimal8;
      case (9):
        return BigDecimal9;
      case (10):
        return BigDecimal10;
      case (11):
        return BigDecimal11;
      case (12):
        return BigDecimal12;
      case (13):
        return BigDecimal13;
      case (14):
        return BigDecimal14;
      case (15):
        return BigDecimal15;
      case (16):
        return BigDecimal16;
      case (17):
        return BigDecimal17;
      case (18):
        return BigDecimal18;
      case (19):
        return BigDecimal19;
      case (20):
        return BigDecimal20;
      case (21):
        return BigDecimal21;
      case (22):
        return BigDecimal22;
      case (23):
        return BigDecimal23;
      case (24):
        return BigDecimal24;
      case (25):
        return BigDecimal25;
      case (26):
        return BigDecimal26;
      case (27):
        return BigDecimal27;
      case (28):
        return BigDecimal28;
      case (29):
        return BigDecimal29;
      case (30):
        return BigDecimal30;
      case (31):
        return BigDecimal31;
      case (32):
        return BigDecimal32;
      case (33):
        return BigDecimal33;
      case (34):
        return BigDecimal34;
      case (35):
        return BigDecimal35;
      case (36):
        return BigDecimal36;
      case (37):
        return BigDecimal37;
      case (38):
        return BigDecimal38;
      case (39):
        return BigDecimal39;
      case (40):
        return BigDecimal40;
      case (41):
        return BigDecimal41;
      case (42):
        return BigDecimal42;
      case (43):
        return BigDecimal43;
      case (44):
        return BigDecimal44;
      case (45):
        return BigDecimal45;
      case (46):
        return BigDecimal46;
      case (47):
        return BigDecimal47;
      case (48):
        return BigDecimal48;
      case (49):
        return BigDecimal49;
      case (50):
        return BigDecimal50;
      case (51):
        return BigDecimal51;
      case (52):
        return BigDecimal52;
      case (53):
        return BigDecimal53;
      case (54):
        return BigDecimal54;
      case (55):
        return BigDecimal55;
      case (56):
        return BigDecimal56;
      case (57):
        return BigDecimal57;
      case (58):
        return BigDecimal58;
      case (59):
        return BigDecimal59;
      case (60):
        return BigDecimal60;
      case (61):
        return BigDecimal61;
      case (62):
        return BigDecimal62;
      case (63):
        return BigDecimal63;
      case (64):
        return BigDecimal64;
      case (65):
        return BigDecimal65;
      case (66):
        return BigDecimal66;
      case (67):
        return BigDecimal67;
      case (68):
        return BigDecimal68;
      case (69):
        return BigDecimal69;
      case (70):
        return BigDecimal70;
      case (71):
        return BigDecimal71;
      case (72):
        return BigDecimal72;
      case (73):
        return BigDecimal73;
      case (74):
        return BigDecimal74;
      case (75):
        return BigDecimal75;
      case (76):
        return BigDecimal76;
      case (77):
        return BigDecimal77;
      case (78):
        return BigDecimal78;
      case (79):
        return BigDecimal79;
      case (80):
        return BigDecimal80;
      case (81):
        return BigDecimal81;
      case (82):
        return BigDecimal82;
      case (83):
        return BigDecimal83;
      case (84):
        return BigDecimal84;
      case (85):
        return BigDecimal85;
      case (86):
        return BigDecimal86;
      case (87):
        return BigDecimal87;
      case (88):
        return BigDecimal88;
      case (89):
        return BigDecimal89;
      case (90):
        return BigDecimal90;
      case (91):
        return BigDecimal91;
      case (92):
        return BigDecimal92;
      case (93):
        return BigDecimal93;
      case (94):
        return BigDecimal94;
      case (95):
        return BigDecimal95;
      case (96):
        return BigDecimal96;
      case (97):
        return BigDecimal97;
      case (98):
        return BigDecimal98;
      case (99):
        return BigDecimal99;
      case (100):
        return BigDecimal100;
      case (101):
        return BigDecimal101;
      case (102):
        return BigDecimal102;
      case (103):
        return BigDecimal103;
      case (104):
        return BigDecimal104;
      case (105):
        return BigDecimal105;
      case (106):
        return BigDecimal106;
      case (107):
        return BigDecimal107;
      case (108):
        return BigDecimal108;
      case (109):
        return BigDecimal109;
      case (110):
        return BigDecimal110;
      case (111):
        return BigDecimal111;
      case (112):
        return BigDecimal112;
      case (113):
        return BigDecimal113;
      case (114):
        return BigDecimal114;
      case (115):
        return BigDecimal115;
      case (116):
        return BigDecimal116;
      case (117):
        return BigDecimal117;
      case (118):
        return BigDecimal118;
      case (119):
        return BigDecimal119;
      case (120):
        return BigDecimal120;
      case (121):
        return BigDecimal121;
      case (122):
        return BigDecimal122;
      case (123):
        return BigDecimal123;
      case (124):
        return BigDecimal124;
      case (125):
        return BigDecimal125;
      case (126):
        return BigDecimal126;
      case (127):
        return BigDecimal127;
      case (128):
        return BigDecimal128;
      case (129):
        return BigDecimal129;
      case (130):
        return BigDecimal130;
      case (131):
        return BigDecimal131;
      case (132):
        return BigDecimal132;
      case (133):
        return BigDecimal133;
      case (134):
        return BigDecimal134;
      case (135):
        return BigDecimal135;
      case (136):
        return BigDecimal136;
      case (137):
        return BigDecimal137;
      case (138):
        return BigDecimal138;
      case (139):
        return BigDecimal139;
      case (140):
        return BigDecimal140;
      case (141):
        return BigDecimal141;
      case (142):
        return BigDecimal142;
      case (143):
        return BigDecimal143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, BigDecimal value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        BigDecimal0 = value;
        break;
      case (1):
        BigDecimal1 = value;
        break;
      case (2):
        BigDecimal2 = value;
        break;
      case (3):
        BigDecimal3 = value;
        break;
      case (4):
        BigDecimal4 = value;
        break;
      case (5):
        BigDecimal5 = value;
        break;
      case (6):
        BigDecimal6 = value;
        break;
      case (7):
        BigDecimal7 = value;
        break;
      case (8):
        BigDecimal8 = value;
        break;
      case (9):
        BigDecimal9 = value;
        break;
      case (10):
        BigDecimal10 = value;
        break;
      case (11):
        BigDecimal11 = value;
        break;
      case (12):
        BigDecimal12 = value;
        break;
      case (13):
        BigDecimal13 = value;
        break;
      case (14):
        BigDecimal14 = value;
        break;
      case (16):
        BigDecimal16 = value;
        break;
      case (17):
        BigDecimal17 = value;
        break;
      case (18):
        BigDecimal18 = value;
        break;
      case (19):
        BigDecimal19 = value;
        break;
      case (20):
        BigDecimal20 = value;
        break;
      case (21):
        BigDecimal21 = value;
        break;
      case (22):
        BigDecimal22 = value;
        break;
      case (23):
        BigDecimal23 = value;
        break;
      case (24):
        BigDecimal24 = value;
        break;
      case (26):
        BigDecimal26 = value;
        break;
      case (28):
        BigDecimal28 = value;
        break;
      case (29):
        BigDecimal29 = value;
        break;
      case (30):
        BigDecimal30 = value;
        break;
      case (31):
        BigDecimal31 = value;
        break;
      case (32):
        BigDecimal32 = value;
        break;
      case (33):
        BigDecimal33 = value;
        break;
      case (35):
        BigDecimal35 = value;
        break;
      case (36):
        BigDecimal36 = value;
        break;
      case (37):
        BigDecimal37 = value;
        break;
      case (38):
        BigDecimal38 = value;
        break;
      case (39):
        BigDecimal39 = value;
        break;
      case (40):
        BigDecimal40 = value;
        break;
      case (41):
        BigDecimal41 = value;
        break;
      case (42):
        BigDecimal42 = value;
        break;
      case (43):
        BigDecimal43 = value;
        break;
      case (44):
        BigDecimal44 = value;
        break;
      case (45):
        BigDecimal45 = value;
        break;
      case (46):
        BigDecimal46 = value;
        break;
      case (47):
        BigDecimal47 = value;
        break;
      case (48):
        BigDecimal48 = value;
        break;
      case (49):
        BigDecimal49 = value;
        break;
      case (50):
        BigDecimal50 = value;
        break;
      case (52):
        BigDecimal52 = value;
        break;
      case (53):
        BigDecimal53 = value;
        break;
      case (54):
        BigDecimal54 = value;
        break;
      case (55):
        BigDecimal55 = value;
        break;
      case (56):
        BigDecimal56 = value;
        break;
      case (57):
        BigDecimal57 = value;
        break;
      case (58):
        BigDecimal58 = value;
        break;
      case (59):
        BigDecimal59 = value;
        break;
      case (60):
        BigDecimal60 = value;
        break;
      case (62):
        BigDecimal62 = value;
        break;
      case (64):
        BigDecimal64 = value;
        break;
      case (65):
        BigDecimal65 = value;
        break;
      case (66):
        BigDecimal66 = value;
        break;
      case (67):
        BigDecimal67 = value;
        break;
      case (68):
        BigDecimal68 = value;
        break;
      case (69):
        BigDecimal69 = value;
        break;
      case (71):
        BigDecimal71 = value;
        break;
      case (72):
        BigDecimal72 = value;
        break;
      case (73):
        BigDecimal73 = value;
        break;
      case (74):
        BigDecimal74 = value;
        break;
      case (75):
        BigDecimal75 = value;
        break;
      case (76):
        BigDecimal76 = value;
        break;
      case (77):
        BigDecimal77 = value;
        break;
      case (78):
        BigDecimal78 = value;
        break;
      case (79):
        BigDecimal79 = value;
        break;
      case (80):
        BigDecimal80 = value;
        break;
      case (81):
        BigDecimal81 = value;
        break;
      case (82):
        BigDecimal82 = value;
        break;
      case (83):
        BigDecimal83 = value;
        break;
      case (84):
        BigDecimal84 = value;
        break;
      case (85):
        BigDecimal85 = value;
        break;
      case (86):
        BigDecimal86 = value;
        break;
      case (88):
        BigDecimal88 = value;
        break;
      case (89):
        BigDecimal89 = value;
        break;
      case (90):
        BigDecimal90 = value;
        break;
      case (91):
        BigDecimal91 = value;
        break;
      case (92):
        BigDecimal92 = value;
        break;
      case (93):
        BigDecimal93 = value;
        break;
      case (94):
        BigDecimal94 = value;
        break;
      case (95):
        BigDecimal95 = value;
        break;
      case (96):
        BigDecimal96 = value;
        break;
      case (98):
        BigDecimal98 = value;
        break;
      case (100):
        BigDecimal100 = value;
        break;
      case (101):
        BigDecimal101 = value;
        break;
      case (102):
        BigDecimal102 = value;
        break;
      case (103):
        BigDecimal103 = value;
        break;
      case (104):
        BigDecimal104 = value;
        break;
      case (105):
        BigDecimal105 = value;
        break;
      case (107):
        BigDecimal107 = value;
        break;
      case (108):
        BigDecimal108 = value;
        break;
      case (109):
        BigDecimal109 = value;
        break;
      case (110):
        BigDecimal110 = value;
        break;
      case (111):
        BigDecimal111 = value;
        break;
      case (112):
        BigDecimal112 = value;
        break;
      case (113):
        BigDecimal113 = value;
        break;
      case (114):
        BigDecimal114 = value;
        break;
      case (115):
        BigDecimal115 = value;
        break;
      case (116):
        BigDecimal116 = value;
        break;
      case (117):
        BigDecimal117 = value;
        break;
      case (118):
        BigDecimal118 = value;
        break;
      case (119):
        BigDecimal119 = value;
        break;
      case (120):
        BigDecimal120 = value;
        break;
      case (121):
        BigDecimal121 = value;
        break;
      case (122):
        BigDecimal122 = value;
        break;
      case (124):
        BigDecimal124 = value;
        break;
      case (125):
        BigDecimal125 = value;
        break;
      case (126):
        BigDecimal126 = value;
        break;
      case (127):
        BigDecimal127 = value;
        break;
      case (128):
        BigDecimal128 = value;
        break;
      case (129):
        BigDecimal129 = value;
        break;
      case (130):
        BigDecimal130 = value;
        break;
      case (131):
        BigDecimal131 = value;
        break;
      case (132):
        BigDecimal132 = value;
        break;
      case (134):
        BigDecimal134 = value;
        break;
      case (136):
        BigDecimal136 = value;
        break;
      case (137):
        BigDecimal137 = value;
        break;
      case (138):
        BigDecimal138 = value;
        break;
      case (139):
        BigDecimal139 = value;
        break;
      case (140):
        BigDecimal140 = value;
        break;
      case (141):
        BigDecimal141 = value;
        break;
      case (143):
        BigDecimal143 = 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);
    }
  }
}
