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