/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.jdo.tck.pc.fieldtypes;

import java.io.Serializable;
import java.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);
    }
  }
}
