/*
 * 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 FieldsOfCharacter {
  public int identifier;
  private Character Character0;
  private Character Character1;
  private Character Character2;
  private Character Character3;
  private Character Character4;
  private Character Character5;
  private Character Character6;
  private Character Character7;
  private static Character Character8;
  private transient Character Character9;
  private transient Character Character10;
  private transient Character Character11;
  private transient Character Character12;
  private transient Character Character13;
  private transient Character Character14;
  private final Character Character15 = Character.valueOf('a');
  private volatile Character Character16;
  private volatile Character Character17;
  private volatile Character Character18;
  private volatile Character Character19;
  private volatile Character Character20;
  private volatile Character Character21;
  private volatile Character Character22;
  private volatile Character Character23;
  private static transient Character Character24;
  private static final Character Character25 = Character.valueOf('a');
  private static volatile Character Character26;
  private final transient Character Character27 = Character.valueOf('a');
  private transient volatile Character Character28;
  private transient volatile Character Character29;
  private transient volatile Character Character30;
  private transient volatile Character Character31;
  private transient volatile Character Character32;
  private transient volatile Character Character33;
  private static final transient Character Character34 = Character.valueOf('a');
  private static transient volatile Character Character35;
  public Character Character36;
  public Character Character37;
  public Character Character38;
  public Character Character39;
  public Character Character40;
  public Character Character41;
  public Character Character42;
  public Character Character43;
  public static Character Character44;
  public transient Character Character45;
  public transient Character Character46;
  public transient Character Character47;
  public transient Character Character48;
  public transient Character Character49;
  public transient Character Character50;
  public final Character Character51 = Character.valueOf('a');
  public volatile Character Character52;
  public volatile Character Character53;
  public volatile Character Character54;
  public volatile Character Character55;
  public volatile Character Character56;
  public volatile Character Character57;
  public volatile Character Character58;
  public volatile Character Character59;
  public static transient Character Character60;
  public static final Character Character61 = Character.valueOf('a');
  public static volatile Character Character62;
  public final transient Character Character63 = Character.valueOf('a');
  public transient volatile Character Character64;
  public transient volatile Character Character65;
  public transient volatile Character Character66;
  public transient volatile Character Character67;
  public transient volatile Character Character68;
  public transient volatile Character Character69;
  public static final transient Character Character70 = Character.valueOf('a');
  public static transient volatile Character Character71;
  protected Character Character72;
  protected Character Character73;
  protected Character Character74;
  protected Character Character75;
  protected Character Character76;
  protected Character Character77;
  protected Character Character78;
  protected Character Character79;
  protected static Character Character80;
  protected transient Character Character81;
  protected transient Character Character82;
  protected transient Character Character83;
  protected transient Character Character84;
  protected transient Character Character85;
  protected transient Character Character86;
  protected final Character Character87 = Character.valueOf('a');
  protected volatile Character Character88;
  protected volatile Character Character89;
  protected volatile Character Character90;
  protected volatile Character Character91;
  protected volatile Character Character92;
  protected volatile Character Character93;
  protected volatile Character Character94;
  protected volatile Character Character95;
  protected static transient Character Character96;
  protected static final Character Character97 = Character.valueOf('a');
  protected static volatile Character Character98;
  protected final transient Character Character99 = Character.valueOf('a');
  protected transient volatile Character Character100;
  protected transient volatile Character Character101;
  protected transient volatile Character Character102;
  protected transient volatile Character Character103;
  protected transient volatile Character Character104;
  protected transient volatile Character Character105;
  protected static final transient Character Character106 = Character.valueOf('a');
  protected static transient volatile Character Character107;
  Character Character108;
  Character Character109;
  Character Character110;
  Character Character111;
  Character Character112;
  Character Character113;
  Character Character114;
  Character Character115;
  static Character Character116;
  transient Character Character117;
  transient Character Character118;
  transient Character Character119;
  transient Character Character120;
  transient Character Character121;
  transient Character Character122;
  final Character Character123 = Character.valueOf('a');
  volatile Character Character124;
  volatile Character Character125;
  volatile Character Character126;
  volatile Character Character127;
  volatile Character Character128;
  volatile Character Character129;
  volatile Character Character130;
  volatile Character Character131;
  static transient Character Character132;
  static final Character Character133 = Character.valueOf('a');
  static volatile Character Character134;
  final transient Character Character135 = Character.valueOf('a');
  transient volatile Character Character136;
  transient volatile Character Character137;
  transient volatile Character Character138;
  transient volatile Character Character139;
  transient volatile Character Character140;
  transient volatile Character Character141;
  static final transient Character Character142 = Character.valueOf('a');
  static transient volatile Character Character143;

  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 Character Character0",
    "embedded= true   private Character Character1",
    "embedded= false   private Character Character2",
    "persistence-modifier= none    private Character Character3",
    "persistence-modifier= persistent    private Character Character4",
    "persistence-modifier= persistent  embedded= true   private Character Character5",
    "persistence-modifier= persistent  embedded= false   private Character Character6",
    "persistence-modifier= transactional    private Character Character7",
    "private static Character Character8",
    "private transient Character Character9",
    "persistence-modifier= none    private transient Character Character10",
    "persistence-modifier= persistent    private transient Character Character11",
    "persistence-modifier= persistent  embedded= true   private transient Character Character12",
    "persistence-modifier= persistent  embedded= false   private transient Character Character13",
    "persistence-modifier= transactional    private transient Character Character14",
    "private final Character Character15",
    "private volatile Character Character16",
    "embedded= true   private volatile Character Character17",
    "embedded= false   private volatile Character Character18",
    "persistence-modifier= none    private volatile Character Character19",
    "persistence-modifier= persistent    private volatile Character Character20",
    "persistence-modifier= persistent  embedded= true   private volatile Character Character21",
    "persistence-modifier= persistent  embedded= false   private volatile Character Character22",
    "persistence-modifier= transactional    private volatile Character Character23",
    "private static transient Character Character24",
    "private static final Character Character25",
    "private static volatile Character Character26",
    "private transient final Character Character27",
    "private transient volatile Character Character28",
    "persistence-modifier= none    private transient volatile Character Character29",
    "persistence-modifier= persistent    private transient volatile Character Character30",
    "persistence-modifier= persistent  embedded= true   private transient volatile Character Character31",
    "persistence-modifier= persistent  embedded= false   private transient volatile Character Character32",
    "persistence-modifier= transactional    private transient volatile Character Character33",
    "private static transient final Character Character34",
    "private static transient volatile Character Character35",
    "public Character Character36",
    "embedded= true   public Character Character37",
    "embedded= false   public Character Character38",
    "persistence-modifier= none    public Character Character39",
    "persistence-modifier= persistent    public Character Character40",
    "persistence-modifier= persistent  embedded= true   public Character Character41",
    "persistence-modifier= persistent  embedded= false   public Character Character42",
    "persistence-modifier= transactional    public Character Character43",
    "public static Character Character44",
    "public transient Character Character45",
    "persistence-modifier= none    public transient Character Character46",
    "persistence-modifier= persistent    public transient Character Character47",
    "persistence-modifier= persistent  embedded= true   public transient Character Character48",
    "persistence-modifier= persistent  embedded= false   public transient Character Character49",
    "persistence-modifier= transactional    public transient Character Character50",
    "public final Character Character51",
    "public volatile Character Character52",
    "embedded= true   public volatile Character Character53",
    "embedded= false   public volatile Character Character54",
    "persistence-modifier= none    public volatile Character Character55",
    "persistence-modifier= persistent    public volatile Character Character56",
    "persistence-modifier= persistent  embedded= true   public volatile Character Character57",
    "persistence-modifier= persistent  embedded= false   public volatile Character Character58",
    "persistence-modifier= transactional    public volatile Character Character59",
    "public static transient Character Character60",
    "public static final Character Character61",
    "public static volatile Character Character62",
    "public transient final Character Character63",
    "public transient volatile Character Character64",
    "persistence-modifier= none    public transient volatile Character Character65",
    "persistence-modifier= persistent    public transient volatile Character Character66",
    "persistence-modifier= persistent  embedded= true   public transient volatile Character Character67",
    "persistence-modifier= persistent  embedded= false   public transient volatile Character Character68",
    "persistence-modifier= transactional    public transient volatile Character Character69",
    "public static transient final Character Character70",
    "public static transient volatile Character Character71",
    "protected Character Character72",
    "embedded= true   protected Character Character73",
    "embedded= false   protected Character Character74",
    "persistence-modifier= none    protected Character Character75",
    "persistence-modifier= persistent    protected Character Character76",
    "persistence-modifier= persistent  embedded= true   protected Character Character77",
    "persistence-modifier= persistent  embedded= false   protected Character Character78",
    "persistence-modifier= transactional    protected Character Character79",
    "protected static Character Character80",
    "protected transient Character Character81",
    "persistence-modifier= none    protected transient Character Character82",
    "persistence-modifier= persistent    protected transient Character Character83",
    "persistence-modifier= persistent  embedded= true   protected transient Character Character84",
    "persistence-modifier= persistent  embedded= false   protected transient Character Character85",
    "persistence-modifier= transactional    protected transient Character Character86",
    "protected final Character Character87",
    "protected volatile Character Character88",
    "embedded= true   protected volatile Character Character89",
    "embedded= false   protected volatile Character Character90",
    "persistence-modifier= none    protected volatile Character Character91",
    "persistence-modifier= persistent    protected volatile Character Character92",
    "persistence-modifier= persistent  embedded= true   protected volatile Character Character93",
    "persistence-modifier= persistent  embedded= false   protected volatile Character Character94",
    "persistence-modifier= transactional    protected volatile Character Character95",
    "protected static transient Character Character96",
    "protected static final Character Character97",
    "protected static volatile Character Character98",
    "protected transient final Character Character99",
    "protected transient volatile Character Character100",
    "persistence-modifier= none    protected transient volatile Character Character101",
    "persistence-modifier= persistent    protected transient volatile Character Character102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile Character Character103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile Character Character104",
    "persistence-modifier= transactional    protected transient volatile Character Character105",
    "protected static transient final Character Character106",
    "protected static transient volatile Character Character107",
    "Character Character108",
    "embedded= true   Character Character109",
    "embedded= false   Character Character110",
    "persistence-modifier= none    Character Character111",
    "persistence-modifier= persistent    Character Character112",
    "persistence-modifier= persistent  embedded= true   Character Character113",
    "persistence-modifier= persistent  embedded= false   Character Character114",
    "persistence-modifier= transactional    Character Character115",
    "static Character Character116",
    "transient Character Character117",
    "persistence-modifier= none    transient Character Character118",
    "persistence-modifier= persistent    transient Character Character119",
    "persistence-modifier= persistent  embedded= true   transient Character Character120",
    "persistence-modifier= persistent  embedded= false   transient Character Character121",
    "persistence-modifier= transactional    transient Character Character122",
    "final Character Character123",
    "volatile Character Character124",
    "embedded= true   volatile Character Character125",
    "embedded= false   volatile Character Character126",
    "persistence-modifier= none    volatile Character Character127",
    "persistence-modifier= persistent    volatile Character Character128",
    "persistence-modifier= persistent  embedded= true   volatile Character Character129",
    "persistence-modifier= persistent  embedded= false   volatile Character Character130",
    "persistence-modifier= transactional    volatile Character Character131",
    "static transient Character Character132",
    "static final Character Character133",
    "static volatile Character Character134",
    "transient final Character Character135",
    "transient volatile Character Character136",
    "persistence-modifier= none    transient volatile Character Character137",
    "persistence-modifier= persistent    transient volatile Character Character138",
    "persistence-modifier= persistent  embedded= true   transient volatile Character Character139",
    "persistence-modifier= persistent  embedded= false   transient volatile Character Character140",
    "persistence-modifier= transactional    transient volatile Character Character141",
    "static transient final Character Character142",
    "static transient volatile Character Character143"
  };

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

  public Character get(int index) {
    switch (index) {
      case (0):
        return Character0;
      case (1):
        return Character1;
      case (2):
        return Character2;
      case (3):
        return Character3;
      case (4):
        return Character4;
      case (5):
        return Character5;
      case (6):
        return Character6;
      case (7):
        return Character7;
      case (8):
        return Character8;
      case (9):
        return Character9;
      case (10):
        return Character10;
      case (11):
        return Character11;
      case (12):
        return Character12;
      case (13):
        return Character13;
      case (14):
        return Character14;
      case (15):
        return Character15;
      case (16):
        return Character16;
      case (17):
        return Character17;
      case (18):
        return Character18;
      case (19):
        return Character19;
      case (20):
        return Character20;
      case (21):
        return Character21;
      case (22):
        return Character22;
      case (23):
        return Character23;
      case (24):
        return Character24;
      case (25):
        return Character25;
      case (26):
        return Character26;
      case (27):
        return Character27;
      case (28):
        return Character28;
      case (29):
        return Character29;
      case (30):
        return Character30;
      case (31):
        return Character31;
      case (32):
        return Character32;
      case (33):
        return Character33;
      case (34):
        return Character34;
      case (35):
        return Character35;
      case (36):
        return Character36;
      case (37):
        return Character37;
      case (38):
        return Character38;
      case (39):
        return Character39;
      case (40):
        return Character40;
      case (41):
        return Character41;
      case (42):
        return Character42;
      case (43):
        return Character43;
      case (44):
        return Character44;
      case (45):
        return Character45;
      case (46):
        return Character46;
      case (47):
        return Character47;
      case (48):
        return Character48;
      case (49):
        return Character49;
      case (50):
        return Character50;
      case (51):
        return Character51;
      case (52):
        return Character52;
      case (53):
        return Character53;
      case (54):
        return Character54;
      case (55):
        return Character55;
      case (56):
        return Character56;
      case (57):
        return Character57;
      case (58):
        return Character58;
      case (59):
        return Character59;
      case (60):
        return Character60;
      case (61):
        return Character61;
      case (62):
        return Character62;
      case (63):
        return Character63;
      case (64):
        return Character64;
      case (65):
        return Character65;
      case (66):
        return Character66;
      case (67):
        return Character67;
      case (68):
        return Character68;
      case (69):
        return Character69;
      case (70):
        return Character70;
      case (71):
        return Character71;
      case (72):
        return Character72;
      case (73):
        return Character73;
      case (74):
        return Character74;
      case (75):
        return Character75;
      case (76):
        return Character76;
      case (77):
        return Character77;
      case (78):
        return Character78;
      case (79):
        return Character79;
      case (80):
        return Character80;
      case (81):
        return Character81;
      case (82):
        return Character82;
      case (83):
        return Character83;
      case (84):
        return Character84;
      case (85):
        return Character85;
      case (86):
        return Character86;
      case (87):
        return Character87;
      case (88):
        return Character88;
      case (89):
        return Character89;
      case (90):
        return Character90;
      case (91):
        return Character91;
      case (92):
        return Character92;
      case (93):
        return Character93;
      case (94):
        return Character94;
      case (95):
        return Character95;
      case (96):
        return Character96;
      case (97):
        return Character97;
      case (98):
        return Character98;
      case (99):
        return Character99;
      case (100):
        return Character100;
      case (101):
        return Character101;
      case (102):
        return Character102;
      case (103):
        return Character103;
      case (104):
        return Character104;
      case (105):
        return Character105;
      case (106):
        return Character106;
      case (107):
        return Character107;
      case (108):
        return Character108;
      case (109):
        return Character109;
      case (110):
        return Character110;
      case (111):
        return Character111;
      case (112):
        return Character112;
      case (113):
        return Character113;
      case (114):
        return Character114;
      case (115):
        return Character115;
      case (116):
        return Character116;
      case (117):
        return Character117;
      case (118):
        return Character118;
      case (119):
        return Character119;
      case (120):
        return Character120;
      case (121):
        return Character121;
      case (122):
        return Character122;
      case (123):
        return Character123;
      case (124):
        return Character124;
      case (125):
        return Character125;
      case (126):
        return Character126;
      case (127):
        return Character127;
      case (128):
        return Character128;
      case (129):
        return Character129;
      case (130):
        return Character130;
      case (131):
        return Character131;
      case (132):
        return Character132;
      case (133):
        return Character133;
      case (134):
        return Character134;
      case (135):
        return Character135;
      case (136):
        return Character136;
      case (137):
        return Character137;
      case (138):
        return Character138;
      case (139):
        return Character139;
      case (140):
        return Character140;
      case (141):
        return Character141;
      case (142):
        return Character142;
      case (143):
        return Character143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, Character value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        Character0 = value;
        break;
      case (1):
        Character1 = value;
        break;
      case (2):
        Character2 = value;
        break;
      case (3):
        Character3 = value;
        break;
      case (4):
        Character4 = value;
        break;
      case (5):
        Character5 = value;
        break;
      case (6):
        Character6 = value;
        break;
      case (7):
        Character7 = value;
        break;
      case (8):
        Character8 = value;
        break;
      case (9):
        Character9 = value;
        break;
      case (10):
        Character10 = value;
        break;
      case (11):
        Character11 = value;
        break;
      case (12):
        Character12 = value;
        break;
      case (13):
        Character13 = value;
        break;
      case (14):
        Character14 = value;
        break;
      case (16):
        Character16 = value;
        break;
      case (17):
        Character17 = value;
        break;
      case (18):
        Character18 = value;
        break;
      case (19):
        Character19 = value;
        break;
      case (20):
        Character20 = value;
        break;
      case (21):
        Character21 = value;
        break;
      case (22):
        Character22 = value;
        break;
      case (23):
        Character23 = value;
        break;
      case (24):
        Character24 = value;
        break;
      case (26):
        Character26 = value;
        break;
      case (28):
        Character28 = value;
        break;
      case (29):
        Character29 = value;
        break;
      case (30):
        Character30 = value;
        break;
      case (31):
        Character31 = value;
        break;
      case (32):
        Character32 = value;
        break;
      case (33):
        Character33 = value;
        break;
      case (35):
        Character35 = value;
        break;
      case (36):
        Character36 = value;
        break;
      case (37):
        Character37 = value;
        break;
      case (38):
        Character38 = value;
        break;
      case (39):
        Character39 = value;
        break;
      case (40):
        Character40 = value;
        break;
      case (41):
        Character41 = value;
        break;
      case (42):
        Character42 = value;
        break;
      case (43):
        Character43 = value;
        break;
      case (44):
        Character44 = value;
        break;
      case (45):
        Character45 = value;
        break;
      case (46):
        Character46 = value;
        break;
      case (47):
        Character47 = value;
        break;
      case (48):
        Character48 = value;
        break;
      case (49):
        Character49 = value;
        break;
      case (50):
        Character50 = value;
        break;
      case (52):
        Character52 = value;
        break;
      case (53):
        Character53 = value;
        break;
      case (54):
        Character54 = value;
        break;
      case (55):
        Character55 = value;
        break;
      case (56):
        Character56 = value;
        break;
      case (57):
        Character57 = value;
        break;
      case (58):
        Character58 = value;
        break;
      case (59):
        Character59 = value;
        break;
      case (60):
        Character60 = value;
        break;
      case (62):
        Character62 = value;
        break;
      case (64):
        Character64 = value;
        break;
      case (65):
        Character65 = value;
        break;
      case (66):
        Character66 = value;
        break;
      case (67):
        Character67 = value;
        break;
      case (68):
        Character68 = value;
        break;
      case (69):
        Character69 = value;
        break;
      case (71):
        Character71 = value;
        break;
      case (72):
        Character72 = value;
        break;
      case (73):
        Character73 = value;
        break;
      case (74):
        Character74 = value;
        break;
      case (75):
        Character75 = value;
        break;
      case (76):
        Character76 = value;
        break;
      case (77):
        Character77 = value;
        break;
      case (78):
        Character78 = value;
        break;
      case (79):
        Character79 = value;
        break;
      case (80):
        Character80 = value;
        break;
      case (81):
        Character81 = value;
        break;
      case (82):
        Character82 = value;
        break;
      case (83):
        Character83 = value;
        break;
      case (84):
        Character84 = value;
        break;
      case (85):
        Character85 = value;
        break;
      case (86):
        Character86 = value;
        break;
      case (88):
        Character88 = value;
        break;
      case (89):
        Character89 = value;
        break;
      case (90):
        Character90 = value;
        break;
      case (91):
        Character91 = value;
        break;
      case (92):
        Character92 = value;
        break;
      case (93):
        Character93 = value;
        break;
      case (94):
        Character94 = value;
        break;
      case (95):
        Character95 = value;
        break;
      case (96):
        Character96 = value;
        break;
      case (98):
        Character98 = value;
        break;
      case (100):
        Character100 = value;
        break;
      case (101):
        Character101 = value;
        break;
      case (102):
        Character102 = value;
        break;
      case (103):
        Character103 = value;
        break;
      case (104):
        Character104 = value;
        break;
      case (105):
        Character105 = value;
        break;
      case (107):
        Character107 = value;
        break;
      case (108):
        Character108 = value;
        break;
      case (109):
        Character109 = value;
        break;
      case (110):
        Character110 = value;
        break;
      case (111):
        Character111 = value;
        break;
      case (112):
        Character112 = value;
        break;
      case (113):
        Character113 = value;
        break;
      case (114):
        Character114 = value;
        break;
      case (115):
        Character115 = value;
        break;
      case (116):
        Character116 = value;
        break;
      case (117):
        Character117 = value;
        break;
      case (118):
        Character118 = value;
        break;
      case (119):
        Character119 = value;
        break;
      case (120):
        Character120 = value;
        break;
      case (121):
        Character121 = value;
        break;
      case (122):
        Character122 = value;
        break;
      case (124):
        Character124 = value;
        break;
      case (125):
        Character125 = value;
        break;
      case (126):
        Character126 = value;
        break;
      case (127):
        Character127 = value;
        break;
      case (128):
        Character128 = value;
        break;
      case (129):
        Character129 = value;
        break;
      case (130):
        Character130 = value;
        break;
      case (131):
        Character131 = value;
        break;
      case (132):
        Character132 = value;
        break;
      case (134):
        Character134 = value;
        break;
      case (136):
        Character136 = value;
        break;
      case (137):
        Character137 = value;
        break;
      case (138):
        Character138 = value;
        break;
      case (139):
        Character139 = value;
        break;
      case (140):
        Character140 = value;
        break;
      case (141):
        Character141 = value;
        break;
      case (143):
        Character143 = 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);
    }
  }
}
