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

public class FieldsOfDouble {
  public int identifier;
  private Double Double0;
  private Double Double1;
  private Double Double2;
  private Double Double3;
  private Double Double4;
  private Double Double5;
  private Double Double6;
  private Double Double7;
  private static Double Double8;
  private transient Double Double9;
  private transient Double Double10;
  private transient Double Double11;
  private transient Double Double12;
  private transient Double Double13;
  private transient Double Double14;
  private final Double Double15 = Double.valueOf(5);
  private volatile Double Double16;
  private volatile Double Double17;
  private volatile Double Double18;
  private volatile Double Double19;
  private volatile Double Double20;
  private volatile Double Double21;
  private volatile Double Double22;
  private volatile Double Double23;
  private static transient Double Double24;
  private static final Double Double25 = Double.valueOf(5);
  private static volatile Double Double26;
  private final transient Double Double27 = Double.valueOf(5);
  private transient volatile Double Double28;
  private transient volatile Double Double29;
  private transient volatile Double Double30;
  private transient volatile Double Double31;
  private transient volatile Double Double32;
  private transient volatile Double Double33;
  private static final transient Double Double34 = Double.valueOf(5);
  private static transient volatile Double Double35;
  public Double Double36;
  public Double Double37;
  public Double Double38;
  public Double Double39;
  public Double Double40;
  public Double Double41;
  public Double Double42;
  public Double Double43;
  public static Double Double44;
  public transient Double Double45;
  public transient Double Double46;
  public transient Double Double47;
  public transient Double Double48;
  public transient Double Double49;
  public transient Double Double50;
  public final Double Double51 = Double.valueOf(5);
  public volatile Double Double52;
  public volatile Double Double53;
  public volatile Double Double54;
  public volatile Double Double55;
  public volatile Double Double56;
  public volatile Double Double57;
  public volatile Double Double58;
  public volatile Double Double59;
  public static transient Double Double60;
  public static final Double Double61 = Double.valueOf(5);
  public static volatile Double Double62;
  public final transient Double Double63 = Double.valueOf(5);
  public transient volatile Double Double64;
  public transient volatile Double Double65;
  public transient volatile Double Double66;
  public transient volatile Double Double67;
  public transient volatile Double Double68;
  public transient volatile Double Double69;
  public static final transient Double Double70 = Double.valueOf(5);
  public static transient volatile Double Double71;
  protected Double Double72;
  protected Double Double73;
  protected Double Double74;
  protected Double Double75;
  protected Double Double76;
  protected Double Double77;
  protected Double Double78;
  protected Double Double79;
  protected static Double Double80;
  protected transient Double Double81;
  protected transient Double Double82;
  protected transient Double Double83;
  protected transient Double Double84;
  protected transient Double Double85;
  protected transient Double Double86;
  protected final Double Double87 = Double.valueOf(5);
  protected volatile Double Double88;
  protected volatile Double Double89;
  protected volatile Double Double90;
  protected volatile Double Double91;
  protected volatile Double Double92;
  protected volatile Double Double93;
  protected volatile Double Double94;
  protected volatile Double Double95;
  protected static transient Double Double96;
  protected static final Double Double97 = Double.valueOf(5);
  protected static volatile Double Double98;
  protected final transient Double Double99 = Double.valueOf(5);
  protected transient volatile Double Double100;
  protected transient volatile Double Double101;
  protected transient volatile Double Double102;
  protected transient volatile Double Double103;
  protected transient volatile Double Double104;
  protected transient volatile Double Double105;
  protected static final transient Double Double106 = Double.valueOf(5);
  protected static transient volatile Double Double107;
  Double Double108;
  Double Double109;
  Double Double110;
  Double Double111;
  Double Double112;
  Double Double113;
  Double Double114;
  Double Double115;
  static Double Double116;
  transient Double Double117;
  transient Double Double118;
  transient Double Double119;
  transient Double Double120;
  transient Double Double121;
  transient Double Double122;
  final Double Double123 = Double.valueOf(5);
  volatile Double Double124;
  volatile Double Double125;
  volatile Double Double126;
  volatile Double Double127;
  volatile Double Double128;
  volatile Double Double129;
  volatile Double Double130;
  volatile Double Double131;
  static transient Double Double132;
  static final Double Double133 = Double.valueOf(5);
  static volatile Double Double134;
  final transient Double Double135 = Double.valueOf(5);
  transient volatile Double Double136;
  transient volatile Double Double137;
  transient volatile Double Double138;
  transient volatile Double Double139;
  transient volatile Double Double140;
  transient volatile Double Double141;
  static final transient Double Double142 = Double.valueOf(5);
  static transient volatile Double Double143;

  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 Double Double0",
    "embedded= true   private Double Double1",
    "embedded= false   private Double Double2",
    "persistence-modifier= none    private Double Double3",
    "persistence-modifier= persistent    private Double Double4",
    "persistence-modifier= persistent  embedded= true   private Double Double5",
    "persistence-modifier= persistent  embedded= false   private Double Double6",
    "persistence-modifier= transactional    private Double Double7",
    "private static Double Double8",
    "private transient Double Double9",
    "persistence-modifier= none    private transient Double Double10",
    "persistence-modifier= persistent    private transient Double Double11",
    "persistence-modifier= persistent  embedded= true   private transient Double Double12",
    "persistence-modifier= persistent  embedded= false   private transient Double Double13",
    "persistence-modifier= transactional    private transient Double Double14",
    "private final Double Double15",
    "private volatile Double Double16",
    "embedded= true   private volatile Double Double17",
    "embedded= false   private volatile Double Double18",
    "persistence-modifier= none    private volatile Double Double19",
    "persistence-modifier= persistent    private volatile Double Double20",
    "persistence-modifier= persistent  embedded= true   private volatile Double Double21",
    "persistence-modifier= persistent  embedded= false   private volatile Double Double22",
    "persistence-modifier= transactional    private volatile Double Double23",
    "private static transient Double Double24",
    "private static final Double Double25",
    "private static volatile Double Double26",
    "private transient final Double Double27",
    "private transient volatile Double Double28",
    "persistence-modifier= none    private transient volatile Double Double29",
    "persistence-modifier= persistent    private transient volatile Double Double30",
    "persistence-modifier= persistent  embedded= true   private transient volatile Double Double31",
    "persistence-modifier= persistent  embedded= false   private transient volatile Double Double32",
    "persistence-modifier= transactional    private transient volatile Double Double33",
    "private static transient final Double Double34",
    "private static transient volatile Double Double35",
    "public Double Double36",
    "embedded= true   public Double Double37",
    "embedded= false   public Double Double38",
    "persistence-modifier= none    public Double Double39",
    "persistence-modifier= persistent    public Double Double40",
    "persistence-modifier= persistent  embedded= true   public Double Double41",
    "persistence-modifier= persistent  embedded= false   public Double Double42",
    "persistence-modifier= transactional    public Double Double43",
    "public static Double Double44",
    "public transient Double Double45",
    "persistence-modifier= none    public transient Double Double46",
    "persistence-modifier= persistent    public transient Double Double47",
    "persistence-modifier= persistent  embedded= true   public transient Double Double48",
    "persistence-modifier= persistent  embedded= false   public transient Double Double49",
    "persistence-modifier= transactional    public transient Double Double50",
    "public final Double Double51",
    "public volatile Double Double52",
    "embedded= true   public volatile Double Double53",
    "embedded= false   public volatile Double Double54",
    "persistence-modifier= none    public volatile Double Double55",
    "persistence-modifier= persistent    public volatile Double Double56",
    "persistence-modifier= persistent  embedded= true   public volatile Double Double57",
    "persistence-modifier= persistent  embedded= false   public volatile Double Double58",
    "persistence-modifier= transactional    public volatile Double Double59",
    "public static transient Double Double60",
    "public static final Double Double61",
    "public static volatile Double Double62",
    "public transient final Double Double63",
    "public transient volatile Double Double64",
    "persistence-modifier= none    public transient volatile Double Double65",
    "persistence-modifier= persistent    public transient volatile Double Double66",
    "persistence-modifier= persistent  embedded= true   public transient volatile Double Double67",
    "persistence-modifier= persistent  embedded= false   public transient volatile Double Double68",
    "persistence-modifier= transactional    public transient volatile Double Double69",
    "public static transient final Double Double70",
    "public static transient volatile Double Double71",
    "protected Double Double72",
    "embedded= true   protected Double Double73",
    "embedded= false   protected Double Double74",
    "persistence-modifier= none    protected Double Double75",
    "persistence-modifier= persistent    protected Double Double76",
    "persistence-modifier= persistent  embedded= true   protected Double Double77",
    "persistence-modifier= persistent  embedded= false   protected Double Double78",
    "persistence-modifier= transactional    protected Double Double79",
    "protected static Double Double80",
    "protected transient Double Double81",
    "persistence-modifier= none    protected transient Double Double82",
    "persistence-modifier= persistent    protected transient Double Double83",
    "persistence-modifier= persistent  embedded= true   protected transient Double Double84",
    "persistence-modifier= persistent  embedded= false   protected transient Double Double85",
    "persistence-modifier= transactional    protected transient Double Double86",
    "protected final Double Double87",
    "protected volatile Double Double88",
    "embedded= true   protected volatile Double Double89",
    "embedded= false   protected volatile Double Double90",
    "persistence-modifier= none    protected volatile Double Double91",
    "persistence-modifier= persistent    protected volatile Double Double92",
    "persistence-modifier= persistent  embedded= true   protected volatile Double Double93",
    "persistence-modifier= persistent  embedded= false   protected volatile Double Double94",
    "persistence-modifier= transactional    protected volatile Double Double95",
    "protected static transient Double Double96",
    "protected static final Double Double97",
    "protected static volatile Double Double98",
    "protected transient final Double Double99",
    "protected transient volatile Double Double100",
    "persistence-modifier= none    protected transient volatile Double Double101",
    "persistence-modifier= persistent    protected transient volatile Double Double102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile Double Double103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile Double Double104",
    "persistence-modifier= transactional    protected transient volatile Double Double105",
    "protected static transient final Double Double106",
    "protected static transient volatile Double Double107",
    "Double Double108",
    "embedded= true   Double Double109",
    "embedded= false   Double Double110",
    "persistence-modifier= none    Double Double111",
    "persistence-modifier= persistent    Double Double112",
    "persistence-modifier= persistent  embedded= true   Double Double113",
    "persistence-modifier= persistent  embedded= false   Double Double114",
    "persistence-modifier= transactional    Double Double115",
    "static Double Double116",
    "transient Double Double117",
    "persistence-modifier= none    transient Double Double118",
    "persistence-modifier= persistent    transient Double Double119",
    "persistence-modifier= persistent  embedded= true   transient Double Double120",
    "persistence-modifier= persistent  embedded= false   transient Double Double121",
    "persistence-modifier= transactional    transient Double Double122",
    "final Double Double123",
    "volatile Double Double124",
    "embedded= true   volatile Double Double125",
    "embedded= false   volatile Double Double126",
    "persistence-modifier= none    volatile Double Double127",
    "persistence-modifier= persistent    volatile Double Double128",
    "persistence-modifier= persistent  embedded= true   volatile Double Double129",
    "persistence-modifier= persistent  embedded= false   volatile Double Double130",
    "persistence-modifier= transactional    volatile Double Double131",
    "static transient Double Double132",
    "static final Double Double133",
    "static volatile Double Double134",
    "transient final Double Double135",
    "transient volatile Double Double136",
    "persistence-modifier= none    transient volatile Double Double137",
    "persistence-modifier= persistent    transient volatile Double Double138",
    "persistence-modifier= persistent  embedded= true   transient volatile Double Double139",
    "persistence-modifier= persistent  embedded= false   transient volatile Double Double140",
    "persistence-modifier= transactional    transient volatile Double Double141",
    "static transient final Double Double142",
    "static transient volatile Double Double143"
  };

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

  public Double get(int index) {
    switch (index) {
      case (0):
        return Double0;
      case (1):
        return Double1;
      case (2):
        return Double2;
      case (3):
        return Double3;
      case (4):
        return Double4;
      case (5):
        return Double5;
      case (6):
        return Double6;
      case (7):
        return Double7;
      case (8):
        return Double8;
      case (9):
        return Double9;
      case (10):
        return Double10;
      case (11):
        return Double11;
      case (12):
        return Double12;
      case (13):
        return Double13;
      case (14):
        return Double14;
      case (15):
        return Double15;
      case (16):
        return Double16;
      case (17):
        return Double17;
      case (18):
        return Double18;
      case (19):
        return Double19;
      case (20):
        return Double20;
      case (21):
        return Double21;
      case (22):
        return Double22;
      case (23):
        return Double23;
      case (24):
        return Double24;
      case (25):
        return Double25;
      case (26):
        return Double26;
      case (27):
        return Double27;
      case (28):
        return Double28;
      case (29):
        return Double29;
      case (30):
        return Double30;
      case (31):
        return Double31;
      case (32):
        return Double32;
      case (33):
        return Double33;
      case (34):
        return Double34;
      case (35):
        return Double35;
      case (36):
        return Double36;
      case (37):
        return Double37;
      case (38):
        return Double38;
      case (39):
        return Double39;
      case (40):
        return Double40;
      case (41):
        return Double41;
      case (42):
        return Double42;
      case (43):
        return Double43;
      case (44):
        return Double44;
      case (45):
        return Double45;
      case (46):
        return Double46;
      case (47):
        return Double47;
      case (48):
        return Double48;
      case (49):
        return Double49;
      case (50):
        return Double50;
      case (51):
        return Double51;
      case (52):
        return Double52;
      case (53):
        return Double53;
      case (54):
        return Double54;
      case (55):
        return Double55;
      case (56):
        return Double56;
      case (57):
        return Double57;
      case (58):
        return Double58;
      case (59):
        return Double59;
      case (60):
        return Double60;
      case (61):
        return Double61;
      case (62):
        return Double62;
      case (63):
        return Double63;
      case (64):
        return Double64;
      case (65):
        return Double65;
      case (66):
        return Double66;
      case (67):
        return Double67;
      case (68):
        return Double68;
      case (69):
        return Double69;
      case (70):
        return Double70;
      case (71):
        return Double71;
      case (72):
        return Double72;
      case (73):
        return Double73;
      case (74):
        return Double74;
      case (75):
        return Double75;
      case (76):
        return Double76;
      case (77):
        return Double77;
      case (78):
        return Double78;
      case (79):
        return Double79;
      case (80):
        return Double80;
      case (81):
        return Double81;
      case (82):
        return Double82;
      case (83):
        return Double83;
      case (84):
        return Double84;
      case (85):
        return Double85;
      case (86):
        return Double86;
      case (87):
        return Double87;
      case (88):
        return Double88;
      case (89):
        return Double89;
      case (90):
        return Double90;
      case (91):
        return Double91;
      case (92):
        return Double92;
      case (93):
        return Double93;
      case (94):
        return Double94;
      case (95):
        return Double95;
      case (96):
        return Double96;
      case (97):
        return Double97;
      case (98):
        return Double98;
      case (99):
        return Double99;
      case (100):
        return Double100;
      case (101):
        return Double101;
      case (102):
        return Double102;
      case (103):
        return Double103;
      case (104):
        return Double104;
      case (105):
        return Double105;
      case (106):
        return Double106;
      case (107):
        return Double107;
      case (108):
        return Double108;
      case (109):
        return Double109;
      case (110):
        return Double110;
      case (111):
        return Double111;
      case (112):
        return Double112;
      case (113):
        return Double113;
      case (114):
        return Double114;
      case (115):
        return Double115;
      case (116):
        return Double116;
      case (117):
        return Double117;
      case (118):
        return Double118;
      case (119):
        return Double119;
      case (120):
        return Double120;
      case (121):
        return Double121;
      case (122):
        return Double122;
      case (123):
        return Double123;
      case (124):
        return Double124;
      case (125):
        return Double125;
      case (126):
        return Double126;
      case (127):
        return Double127;
      case (128):
        return Double128;
      case (129):
        return Double129;
      case (130):
        return Double130;
      case (131):
        return Double131;
      case (132):
        return Double132;
      case (133):
        return Double133;
      case (134):
        return Double134;
      case (135):
        return Double135;
      case (136):
        return Double136;
      case (137):
        return Double137;
      case (138):
        return Double138;
      case (139):
        return Double139;
      case (140):
        return Double140;
      case (141):
        return Double141;
      case (142):
        return Double142;
      case (143):
        return Double143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, Double value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        Double0 = value;
        break;
      case (1):
        Double1 = value;
        break;
      case (2):
        Double2 = value;
        break;
      case (3):
        Double3 = value;
        break;
      case (4):
        Double4 = value;
        break;
      case (5):
        Double5 = value;
        break;
      case (6):
        Double6 = value;
        break;
      case (7):
        Double7 = value;
        break;
      case (8):
        Double8 = value;
        break;
      case (9):
        Double9 = value;
        break;
      case (10):
        Double10 = value;
        break;
      case (11):
        Double11 = value;
        break;
      case (12):
        Double12 = value;
        break;
      case (13):
        Double13 = value;
        break;
      case (14):
        Double14 = value;
        break;
      case (16):
        Double16 = value;
        break;
      case (17):
        Double17 = value;
        break;
      case (18):
        Double18 = value;
        break;
      case (19):
        Double19 = value;
        break;
      case (20):
        Double20 = value;
        break;
      case (21):
        Double21 = value;
        break;
      case (22):
        Double22 = value;
        break;
      case (23):
        Double23 = value;
        break;
      case (24):
        Double24 = value;
        break;
      case (26):
        Double26 = value;
        break;
      case (28):
        Double28 = value;
        break;
      case (29):
        Double29 = value;
        break;
      case (30):
        Double30 = value;
        break;
      case (31):
        Double31 = value;
        break;
      case (32):
        Double32 = value;
        break;
      case (33):
        Double33 = value;
        break;
      case (35):
        Double35 = value;
        break;
      case (36):
        Double36 = value;
        break;
      case (37):
        Double37 = value;
        break;
      case (38):
        Double38 = value;
        break;
      case (39):
        Double39 = value;
        break;
      case (40):
        Double40 = value;
        break;
      case (41):
        Double41 = value;
        break;
      case (42):
        Double42 = value;
        break;
      case (43):
        Double43 = value;
        break;
      case (44):
        Double44 = value;
        break;
      case (45):
        Double45 = value;
        break;
      case (46):
        Double46 = value;
        break;
      case (47):
        Double47 = value;
        break;
      case (48):
        Double48 = value;
        break;
      case (49):
        Double49 = value;
        break;
      case (50):
        Double50 = value;
        break;
      case (52):
        Double52 = value;
        break;
      case (53):
        Double53 = value;
        break;
      case (54):
        Double54 = value;
        break;
      case (55):
        Double55 = value;
        break;
      case (56):
        Double56 = value;
        break;
      case (57):
        Double57 = value;
        break;
      case (58):
        Double58 = value;
        break;
      case (59):
        Double59 = value;
        break;
      case (60):
        Double60 = value;
        break;
      case (62):
        Double62 = value;
        break;
      case (64):
        Double64 = value;
        break;
      case (65):
        Double65 = value;
        break;
      case (66):
        Double66 = value;
        break;
      case (67):
        Double67 = value;
        break;
      case (68):
        Double68 = value;
        break;
      case (69):
        Double69 = value;
        break;
      case (71):
        Double71 = value;
        break;
      case (72):
        Double72 = value;
        break;
      case (73):
        Double73 = value;
        break;
      case (74):
        Double74 = value;
        break;
      case (75):
        Double75 = value;
        break;
      case (76):
        Double76 = value;
        break;
      case (77):
        Double77 = value;
        break;
      case (78):
        Double78 = value;
        break;
      case (79):
        Double79 = value;
        break;
      case (80):
        Double80 = value;
        break;
      case (81):
        Double81 = value;
        break;
      case (82):
        Double82 = value;
        break;
      case (83):
        Double83 = value;
        break;
      case (84):
        Double84 = value;
        break;
      case (85):
        Double85 = value;
        break;
      case (86):
        Double86 = value;
        break;
      case (88):
        Double88 = value;
        break;
      case (89):
        Double89 = value;
        break;
      case (90):
        Double90 = value;
        break;
      case (91):
        Double91 = value;
        break;
      case (92):
        Double92 = value;
        break;
      case (93):
        Double93 = value;
        break;
      case (94):
        Double94 = value;
        break;
      case (95):
        Double95 = value;
        break;
      case (96):
        Double96 = value;
        break;
      case (98):
        Double98 = value;
        break;
      case (100):
        Double100 = value;
        break;
      case (101):
        Double101 = value;
        break;
      case (102):
        Double102 = value;
        break;
      case (103):
        Double103 = value;
        break;
      case (104):
        Double104 = value;
        break;
      case (105):
        Double105 = value;
        break;
      case (107):
        Double107 = value;
        break;
      case (108):
        Double108 = value;
        break;
      case (109):
        Double109 = value;
        break;
      case (110):
        Double110 = value;
        break;
      case (111):
        Double111 = value;
        break;
      case (112):
        Double112 = value;
        break;
      case (113):
        Double113 = value;
        break;
      case (114):
        Double114 = value;
        break;
      case (115):
        Double115 = value;
        break;
      case (116):
        Double116 = value;
        break;
      case (117):
        Double117 = value;
        break;
      case (118):
        Double118 = value;
        break;
      case (119):
        Double119 = value;
        break;
      case (120):
        Double120 = value;
        break;
      case (121):
        Double121 = value;
        break;
      case (122):
        Double122 = value;
        break;
      case (124):
        Double124 = value;
        break;
      case (125):
        Double125 = value;
        break;
      case (126):
        Double126 = value;
        break;
      case (127):
        Double127 = value;
        break;
      case (128):
        Double128 = value;
        break;
      case (129):
        Double129 = value;
        break;
      case (130):
        Double130 = value;
        break;
      case (131):
        Double131 = value;
        break;
      case (132):
        Double132 = value;
        break;
      case (134):
        Double134 = value;
        break;
      case (136):
        Double136 = value;
        break;
      case (137):
        Double137 = value;
        break;
      case (138):
        Double138 = value;
        break;
      case (139):
        Double139 = value;
        break;
      case (140):
        Double140 = value;
        break;
      case (141):
        Double141 = value;
        break;
      case (143):
        Double143 = 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);
    }
  }
}
