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

public class FieldsOfDate {
  public int identifier;
  private Date Date0;
  private Date Date1;
  private Date Date2;
  private Date Date3;
  private Date Date4;
  private Date Date5;
  private Date Date6;
  private Date Date7;
  private static Date Date8;
  private transient Date Date9;
  private transient Date Date10;
  private transient Date Date11;
  private transient Date Date12;
  private transient Date Date13;
  private transient Date Date14;
  private final Date Date15 = new Date();
  private volatile Date Date16;
  private volatile Date Date17;
  private volatile Date Date18;
  private volatile Date Date19;
  private volatile Date Date20;
  private volatile Date Date21;
  private volatile Date Date22;
  private volatile Date Date23;
  private static transient Date Date24;
  private static final Date Date25 = new Date();
  private static volatile Date Date26;
  private final transient Date Date27 = new Date();
  private transient volatile Date Date28;
  private transient volatile Date Date29;
  private transient volatile Date Date30;
  private transient volatile Date Date31;
  private transient volatile Date Date32;
  private transient volatile Date Date33;
  private static final transient Date Date34 = new Date();
  private static transient volatile Date Date35;
  public Date Date36;
  public Date Date37;
  public Date Date38;
  public Date Date39;
  public Date Date40;
  public Date Date41;
  public Date Date42;
  public Date Date43;
  public static Date Date44;
  public transient Date Date45;
  public transient Date Date46;
  public transient Date Date47;
  public transient Date Date48;
  public transient Date Date49;
  public transient Date Date50;
  public final Date Date51 = new Date();
  public volatile Date Date52;
  public volatile Date Date53;
  public volatile Date Date54;
  public volatile Date Date55;
  public volatile Date Date56;
  public volatile Date Date57;
  public volatile Date Date58;
  public volatile Date Date59;
  public static transient Date Date60;
  public static final Date Date61 = new Date();
  public static volatile Date Date62;
  public final transient Date Date63 = new Date();
  public transient volatile Date Date64;
  public transient volatile Date Date65;
  public transient volatile Date Date66;
  public transient volatile Date Date67;
  public transient volatile Date Date68;
  public transient volatile Date Date69;
  public static final transient Date Date70 = new Date();
  public static transient volatile Date Date71;
  protected Date Date72;
  protected Date Date73;
  protected Date Date74;
  protected Date Date75;
  protected Date Date76;
  protected Date Date77;
  protected Date Date78;
  protected Date Date79;
  protected static Date Date80;
  protected transient Date Date81;
  protected transient Date Date82;
  protected transient Date Date83;
  protected transient Date Date84;
  protected transient Date Date85;
  protected transient Date Date86;
  protected final Date Date87 = new Date();
  protected volatile Date Date88;
  protected volatile Date Date89;
  protected volatile Date Date90;
  protected volatile Date Date91;
  protected volatile Date Date92;
  protected volatile Date Date93;
  protected volatile Date Date94;
  protected volatile Date Date95;
  protected static transient Date Date96;
  protected static final Date Date97 = new Date();
  protected static volatile Date Date98;
  protected final transient Date Date99 = new Date();
  protected transient volatile Date Date100;
  protected transient volatile Date Date101;
  protected transient volatile Date Date102;
  protected transient volatile Date Date103;
  protected transient volatile Date Date104;
  protected transient volatile Date Date105;
  protected static final transient Date Date106 = new Date();
  protected static transient volatile Date Date107;
  Date Date108;
  Date Date109;
  Date Date110;
  Date Date111;
  Date Date112;
  Date Date113;
  Date Date114;
  Date Date115;
  static Date Date116;
  transient Date Date117;
  transient Date Date118;
  transient Date Date119;
  transient Date Date120;
  transient Date Date121;
  transient Date Date122;
  final Date Date123 = new Date();
  volatile Date Date124;
  volatile Date Date125;
  volatile Date Date126;
  volatile Date Date127;
  volatile Date Date128;
  volatile Date Date129;
  volatile Date Date130;
  volatile Date Date131;
  static transient Date Date132;
  static final Date Date133 = new Date();
  static volatile Date Date134;
  final transient Date Date135 = new Date();
  transient volatile Date Date136;
  transient volatile Date Date137;
  transient volatile Date Date138;
  transient volatile Date Date139;
  transient volatile Date Date140;
  transient volatile Date Date141;
  static final transient Date Date142 = new Date();
  static transient volatile Date Date143;

  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 Date Date0",
    "embedded= true   private Date Date1",
    "embedded= false   private Date Date2",
    "persistence-modifier= none    private Date Date3",
    "persistence-modifier= persistent    private Date Date4",
    "persistence-modifier= persistent  embedded= true   private Date Date5",
    "persistence-modifier= persistent  embedded= false   private Date Date6",
    "persistence-modifier= transactional    private Date Date7",
    "private static Date Date8",
    "private transient Date Date9",
    "persistence-modifier= none    private transient Date Date10",
    "persistence-modifier= persistent    private transient Date Date11",
    "persistence-modifier= persistent  embedded= true   private transient Date Date12",
    "persistence-modifier= persistent  embedded= false   private transient Date Date13",
    "persistence-modifier= transactional    private transient Date Date14",
    "private final Date Date15",
    "private volatile Date Date16",
    "embedded= true   private volatile Date Date17",
    "embedded= false   private volatile Date Date18",
    "persistence-modifier= none    private volatile Date Date19",
    "persistence-modifier= persistent    private volatile Date Date20",
    "persistence-modifier= persistent  embedded= true   private volatile Date Date21",
    "persistence-modifier= persistent  embedded= false   private volatile Date Date22",
    "persistence-modifier= transactional    private volatile Date Date23",
    "private static transient Date Date24",
    "private static final Date Date25",
    "private static volatile Date Date26",
    "private transient final Date Date27",
    "private transient volatile Date Date28",
    "persistence-modifier= none    private transient volatile Date Date29",
    "persistence-modifier= persistent    private transient volatile Date Date30",
    "persistence-modifier= persistent  embedded= true   private transient volatile Date Date31",
    "persistence-modifier= persistent  embedded= false   private transient volatile Date Date32",
    "persistence-modifier= transactional    private transient volatile Date Date33",
    "private static transient final Date Date34",
    "private static transient volatile Date Date35",
    "public Date Date36",
    "embedded= true   public Date Date37",
    "embedded= false   public Date Date38",
    "persistence-modifier= none    public Date Date39",
    "persistence-modifier= persistent    public Date Date40",
    "persistence-modifier= persistent  embedded= true   public Date Date41",
    "persistence-modifier= persistent  embedded= false   public Date Date42",
    "persistence-modifier= transactional    public Date Date43",
    "public static Date Date44",
    "public transient Date Date45",
    "persistence-modifier= none    public transient Date Date46",
    "persistence-modifier= persistent    public transient Date Date47",
    "persistence-modifier= persistent  embedded= true   public transient Date Date48",
    "persistence-modifier= persistent  embedded= false   public transient Date Date49",
    "persistence-modifier= transactional    public transient Date Date50",
    "public final Date Date51",
    "public volatile Date Date52",
    "embedded= true   public volatile Date Date53",
    "embedded= false   public volatile Date Date54",
    "persistence-modifier= none    public volatile Date Date55",
    "persistence-modifier= persistent    public volatile Date Date56",
    "persistence-modifier= persistent  embedded= true   public volatile Date Date57",
    "persistence-modifier= persistent  embedded= false   public volatile Date Date58",
    "persistence-modifier= transactional    public volatile Date Date59",
    "public static transient Date Date60",
    "public static final Date Date61",
    "public static volatile Date Date62",
    "public transient final Date Date63",
    "public transient volatile Date Date64",
    "persistence-modifier= none    public transient volatile Date Date65",
    "persistence-modifier= persistent    public transient volatile Date Date66",
    "persistence-modifier= persistent  embedded= true   public transient volatile Date Date67",
    "persistence-modifier= persistent  embedded= false   public transient volatile Date Date68",
    "persistence-modifier= transactional    public transient volatile Date Date69",
    "public static transient final Date Date70",
    "public static transient volatile Date Date71",
    "protected Date Date72",
    "embedded= true   protected Date Date73",
    "embedded= false   protected Date Date74",
    "persistence-modifier= none    protected Date Date75",
    "persistence-modifier= persistent    protected Date Date76",
    "persistence-modifier= persistent  embedded= true   protected Date Date77",
    "persistence-modifier= persistent  embedded= false   protected Date Date78",
    "persistence-modifier= transactional    protected Date Date79",
    "protected static Date Date80",
    "protected transient Date Date81",
    "persistence-modifier= none    protected transient Date Date82",
    "persistence-modifier= persistent    protected transient Date Date83",
    "persistence-modifier= persistent  embedded= true   protected transient Date Date84",
    "persistence-modifier= persistent  embedded= false   protected transient Date Date85",
    "persistence-modifier= transactional    protected transient Date Date86",
    "protected final Date Date87",
    "protected volatile Date Date88",
    "embedded= true   protected volatile Date Date89",
    "embedded= false   protected volatile Date Date90",
    "persistence-modifier= none    protected volatile Date Date91",
    "persistence-modifier= persistent    protected volatile Date Date92",
    "persistence-modifier= persistent  embedded= true   protected volatile Date Date93",
    "persistence-modifier= persistent  embedded= false   protected volatile Date Date94",
    "persistence-modifier= transactional    protected volatile Date Date95",
    "protected static transient Date Date96",
    "protected static final Date Date97",
    "protected static volatile Date Date98",
    "protected transient final Date Date99",
    "protected transient volatile Date Date100",
    "persistence-modifier= none    protected transient volatile Date Date101",
    "persistence-modifier= persistent    protected transient volatile Date Date102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile Date Date103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile Date Date104",
    "persistence-modifier= transactional    protected transient volatile Date Date105",
    "protected static transient final Date Date106",
    "protected static transient volatile Date Date107",
    "Date Date108",
    "embedded= true   Date Date109",
    "embedded= false   Date Date110",
    "persistence-modifier= none    Date Date111",
    "persistence-modifier= persistent    Date Date112",
    "persistence-modifier= persistent  embedded= true   Date Date113",
    "persistence-modifier= persistent  embedded= false   Date Date114",
    "persistence-modifier= transactional    Date Date115",
    "static Date Date116",
    "transient Date Date117",
    "persistence-modifier= none    transient Date Date118",
    "persistence-modifier= persistent    transient Date Date119",
    "persistence-modifier= persistent  embedded= true   transient Date Date120",
    "persistence-modifier= persistent  embedded= false   transient Date Date121",
    "persistence-modifier= transactional    transient Date Date122",
    "final Date Date123",
    "volatile Date Date124",
    "embedded= true   volatile Date Date125",
    "embedded= false   volatile Date Date126",
    "persistence-modifier= none    volatile Date Date127",
    "persistence-modifier= persistent    volatile Date Date128",
    "persistence-modifier= persistent  embedded= true   volatile Date Date129",
    "persistence-modifier= persistent  embedded= false   volatile Date Date130",
    "persistence-modifier= transactional    volatile Date Date131",
    "static transient Date Date132",
    "static final Date Date133",
    "static volatile Date Date134",
    "transient final Date Date135",
    "transient volatile Date Date136",
    "persistence-modifier= none    transient volatile Date Date137",
    "persistence-modifier= persistent    transient volatile Date Date138",
    "persistence-modifier= persistent  embedded= true   transient volatile Date Date139",
    "persistence-modifier= persistent  embedded= false   transient volatile Date Date140",
    "persistence-modifier= transactional    transient volatile Date Date141",
    "static transient final Date Date142",
    "static transient volatile Date Date143"
  };

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

  public Date get(int index) {
    switch (index) {
      case (0):
        return Date0;
      case (1):
        return Date1;
      case (2):
        return Date2;
      case (3):
        return Date3;
      case (4):
        return Date4;
      case (5):
        return Date5;
      case (6):
        return Date6;
      case (7):
        return Date7;
      case (8):
        return Date8;
      case (9):
        return Date9;
      case (10):
        return Date10;
      case (11):
        return Date11;
      case (12):
        return Date12;
      case (13):
        return Date13;
      case (14):
        return Date14;
      case (15):
        return Date15;
      case (16):
        return Date16;
      case (17):
        return Date17;
      case (18):
        return Date18;
      case (19):
        return Date19;
      case (20):
        return Date20;
      case (21):
        return Date21;
      case (22):
        return Date22;
      case (23):
        return Date23;
      case (24):
        return Date24;
      case (25):
        return Date25;
      case (26):
        return Date26;
      case (27):
        return Date27;
      case (28):
        return Date28;
      case (29):
        return Date29;
      case (30):
        return Date30;
      case (31):
        return Date31;
      case (32):
        return Date32;
      case (33):
        return Date33;
      case (34):
        return Date34;
      case (35):
        return Date35;
      case (36):
        return Date36;
      case (37):
        return Date37;
      case (38):
        return Date38;
      case (39):
        return Date39;
      case (40):
        return Date40;
      case (41):
        return Date41;
      case (42):
        return Date42;
      case (43):
        return Date43;
      case (44):
        return Date44;
      case (45):
        return Date45;
      case (46):
        return Date46;
      case (47):
        return Date47;
      case (48):
        return Date48;
      case (49):
        return Date49;
      case (50):
        return Date50;
      case (51):
        return Date51;
      case (52):
        return Date52;
      case (53):
        return Date53;
      case (54):
        return Date54;
      case (55):
        return Date55;
      case (56):
        return Date56;
      case (57):
        return Date57;
      case (58):
        return Date58;
      case (59):
        return Date59;
      case (60):
        return Date60;
      case (61):
        return Date61;
      case (62):
        return Date62;
      case (63):
        return Date63;
      case (64):
        return Date64;
      case (65):
        return Date65;
      case (66):
        return Date66;
      case (67):
        return Date67;
      case (68):
        return Date68;
      case (69):
        return Date69;
      case (70):
        return Date70;
      case (71):
        return Date71;
      case (72):
        return Date72;
      case (73):
        return Date73;
      case (74):
        return Date74;
      case (75):
        return Date75;
      case (76):
        return Date76;
      case (77):
        return Date77;
      case (78):
        return Date78;
      case (79):
        return Date79;
      case (80):
        return Date80;
      case (81):
        return Date81;
      case (82):
        return Date82;
      case (83):
        return Date83;
      case (84):
        return Date84;
      case (85):
        return Date85;
      case (86):
        return Date86;
      case (87):
        return Date87;
      case (88):
        return Date88;
      case (89):
        return Date89;
      case (90):
        return Date90;
      case (91):
        return Date91;
      case (92):
        return Date92;
      case (93):
        return Date93;
      case (94):
        return Date94;
      case (95):
        return Date95;
      case (96):
        return Date96;
      case (97):
        return Date97;
      case (98):
        return Date98;
      case (99):
        return Date99;
      case (100):
        return Date100;
      case (101):
        return Date101;
      case (102):
        return Date102;
      case (103):
        return Date103;
      case (104):
        return Date104;
      case (105):
        return Date105;
      case (106):
        return Date106;
      case (107):
        return Date107;
      case (108):
        return Date108;
      case (109):
        return Date109;
      case (110):
        return Date110;
      case (111):
        return Date111;
      case (112):
        return Date112;
      case (113):
        return Date113;
      case (114):
        return Date114;
      case (115):
        return Date115;
      case (116):
        return Date116;
      case (117):
        return Date117;
      case (118):
        return Date118;
      case (119):
        return Date119;
      case (120):
        return Date120;
      case (121):
        return Date121;
      case (122):
        return Date122;
      case (123):
        return Date123;
      case (124):
        return Date124;
      case (125):
        return Date125;
      case (126):
        return Date126;
      case (127):
        return Date127;
      case (128):
        return Date128;
      case (129):
        return Date129;
      case (130):
        return Date130;
      case (131):
        return Date131;
      case (132):
        return Date132;
      case (133):
        return Date133;
      case (134):
        return Date134;
      case (135):
        return Date135;
      case (136):
        return Date136;
      case (137):
        return Date137;
      case (138):
        return Date138;
      case (139):
        return Date139;
      case (140):
        return Date140;
      case (141):
        return Date141;
      case (142):
        return Date142;
      case (143):
        return Date143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, Date value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        Date0 = value;
        break;
      case (1):
        Date1 = value;
        break;
      case (2):
        Date2 = value;
        break;
      case (3):
        Date3 = value;
        break;
      case (4):
        Date4 = value;
        break;
      case (5):
        Date5 = value;
        break;
      case (6):
        Date6 = value;
        break;
      case (7):
        Date7 = value;
        break;
      case (8):
        Date8 = value;
        break;
      case (9):
        Date9 = value;
        break;
      case (10):
        Date10 = value;
        break;
      case (11):
        Date11 = value;
        break;
      case (12):
        Date12 = value;
        break;
      case (13):
        Date13 = value;
        break;
      case (14):
        Date14 = value;
        break;
      case (16):
        Date16 = value;
        break;
      case (17):
        Date17 = value;
        break;
      case (18):
        Date18 = value;
        break;
      case (19):
        Date19 = value;
        break;
      case (20):
        Date20 = value;
        break;
      case (21):
        Date21 = value;
        break;
      case (22):
        Date22 = value;
        break;
      case (23):
        Date23 = value;
        break;
      case (24):
        Date24 = value;
        break;
      case (26):
        Date26 = value;
        break;
      case (28):
        Date28 = value;
        break;
      case (29):
        Date29 = value;
        break;
      case (30):
        Date30 = value;
        break;
      case (31):
        Date31 = value;
        break;
      case (32):
        Date32 = value;
        break;
      case (33):
        Date33 = value;
        break;
      case (35):
        Date35 = value;
        break;
      case (36):
        Date36 = value;
        break;
      case (37):
        Date37 = value;
        break;
      case (38):
        Date38 = value;
        break;
      case (39):
        Date39 = value;
        break;
      case (40):
        Date40 = value;
        break;
      case (41):
        Date41 = value;
        break;
      case (42):
        Date42 = value;
        break;
      case (43):
        Date43 = value;
        break;
      case (44):
        Date44 = value;
        break;
      case (45):
        Date45 = value;
        break;
      case (46):
        Date46 = value;
        break;
      case (47):
        Date47 = value;
        break;
      case (48):
        Date48 = value;
        break;
      case (49):
        Date49 = value;
        break;
      case (50):
        Date50 = value;
        break;
      case (52):
        Date52 = value;
        break;
      case (53):
        Date53 = value;
        break;
      case (54):
        Date54 = value;
        break;
      case (55):
        Date55 = value;
        break;
      case (56):
        Date56 = value;
        break;
      case (57):
        Date57 = value;
        break;
      case (58):
        Date58 = value;
        break;
      case (59):
        Date59 = value;
        break;
      case (60):
        Date60 = value;
        break;
      case (62):
        Date62 = value;
        break;
      case (64):
        Date64 = value;
        break;
      case (65):
        Date65 = value;
        break;
      case (66):
        Date66 = value;
        break;
      case (67):
        Date67 = value;
        break;
      case (68):
        Date68 = value;
        break;
      case (69):
        Date69 = value;
        break;
      case (71):
        Date71 = value;
        break;
      case (72):
        Date72 = value;
        break;
      case (73):
        Date73 = value;
        break;
      case (74):
        Date74 = value;
        break;
      case (75):
        Date75 = value;
        break;
      case (76):
        Date76 = value;
        break;
      case (77):
        Date77 = value;
        break;
      case (78):
        Date78 = value;
        break;
      case (79):
        Date79 = value;
        break;
      case (80):
        Date80 = value;
        break;
      case (81):
        Date81 = value;
        break;
      case (82):
        Date82 = value;
        break;
      case (83):
        Date83 = value;
        break;
      case (84):
        Date84 = value;
        break;
      case (85):
        Date85 = value;
        break;
      case (86):
        Date86 = value;
        break;
      case (88):
        Date88 = value;
        break;
      case (89):
        Date89 = value;
        break;
      case (90):
        Date90 = value;
        break;
      case (91):
        Date91 = value;
        break;
      case (92):
        Date92 = value;
        break;
      case (93):
        Date93 = value;
        break;
      case (94):
        Date94 = value;
        break;
      case (95):
        Date95 = value;
        break;
      case (96):
        Date96 = value;
        break;
      case (98):
        Date98 = value;
        break;
      case (100):
        Date100 = value;
        break;
      case (101):
        Date101 = value;
        break;
      case (102):
        Date102 = value;
        break;
      case (103):
        Date103 = value;
        break;
      case (104):
        Date104 = value;
        break;
      case (105):
        Date105 = value;
        break;
      case (107):
        Date107 = value;
        break;
      case (108):
        Date108 = value;
        break;
      case (109):
        Date109 = value;
        break;
      case (110):
        Date110 = value;
        break;
      case (111):
        Date111 = value;
        break;
      case (112):
        Date112 = value;
        break;
      case (113):
        Date113 = value;
        break;
      case (114):
        Date114 = value;
        break;
      case (115):
        Date115 = value;
        break;
      case (116):
        Date116 = value;
        break;
      case (117):
        Date117 = value;
        break;
      case (118):
        Date118 = value;
        break;
      case (119):
        Date119 = value;
        break;
      case (120):
        Date120 = value;
        break;
      case (121):
        Date121 = value;
        break;
      case (122):
        Date122 = value;
        break;
      case (124):
        Date124 = value;
        break;
      case (125):
        Date125 = value;
        break;
      case (126):
        Date126 = value;
        break;
      case (127):
        Date127 = value;
        break;
      case (128):
        Date128 = value;
        break;
      case (129):
        Date129 = value;
        break;
      case (130):
        Date130 = value;
        break;
      case (131):
        Date131 = value;
        break;
      case (132):
        Date132 = value;
        break;
      case (134):
        Date134 = value;
        break;
      case (136):
        Date136 = value;
        break;
      case (137):
        Date137 = value;
        break;
      case (138):
        Date138 = value;
        break;
      case (139):
        Date139 = value;
        break;
      case (140):
        Date140 = value;
        break;
      case (141):
        Date141 = value;
        break;
      case (143):
        Date143 = 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);
    }
  }
}
