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

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