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

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

import java.io.Serializable;

public class FieldsOfByte {
  public int identifier;
  private Byte Byte0;
  private Byte Byte1;
  private Byte Byte2;
  private Byte Byte3;
  private Byte Byte4;
  private Byte Byte5;
  private Byte Byte6;
  private Byte Byte7;
  private static Byte Byte8;
  private transient Byte Byte9;
  private transient Byte Byte10;
  private transient Byte Byte11;
  private transient Byte Byte12;
  private transient Byte Byte13;
  private transient Byte Byte14;
  private final Byte Byte15 = Byte.valueOf((byte) 5);
  private volatile Byte Byte16;
  private volatile Byte Byte17;
  private volatile Byte Byte18;
  private volatile Byte Byte19;
  private volatile Byte Byte20;
  private volatile Byte Byte21;
  private volatile Byte Byte22;
  private volatile Byte Byte23;
  private static transient Byte Byte24;
  private static final Byte Byte25 = Byte.valueOf((byte) 5);
  private static volatile Byte Byte26;
  private final transient Byte Byte27 = Byte.valueOf((byte) 5);
  private transient volatile Byte Byte28;
  private transient volatile Byte Byte29;
  private transient volatile Byte Byte30;
  private transient volatile Byte Byte31;
  private transient volatile Byte Byte32;
  private transient volatile Byte Byte33;
  private static final transient Byte Byte34 = Byte.valueOf((byte) 5);
  private static transient volatile Byte Byte35;
  public Byte Byte36;
  public Byte Byte37;
  public Byte Byte38;
  public Byte Byte39;
  public Byte Byte40;
  public Byte Byte41;
  public Byte Byte42;
  public Byte Byte43;
  public static Byte Byte44;
  public transient Byte Byte45;
  public transient Byte Byte46;
  public transient Byte Byte47;
  public transient Byte Byte48;
  public transient Byte Byte49;
  public transient Byte Byte50;
  public final Byte Byte51 = Byte.valueOf((byte) 5);
  public volatile Byte Byte52;
  public volatile Byte Byte53;
  public volatile Byte Byte54;
  public volatile Byte Byte55;
  public volatile Byte Byte56;
  public volatile Byte Byte57;
  public volatile Byte Byte58;
  public volatile Byte Byte59;
  public static transient Byte Byte60;
  public static final Byte Byte61 = Byte.valueOf((byte) 5);
  public static volatile Byte Byte62;
  public final transient Byte Byte63 = Byte.valueOf((byte) 5);
  public transient volatile Byte Byte64;
  public transient volatile Byte Byte65;
  public transient volatile Byte Byte66;
  public transient volatile Byte Byte67;
  public transient volatile Byte Byte68;
  public transient volatile Byte Byte69;
  public static final transient Byte Byte70 = Byte.valueOf((byte) 5);
  public static transient volatile Byte Byte71;
  protected Byte Byte72;
  protected Byte Byte73;
  protected Byte Byte74;
  protected Byte Byte75;
  protected Byte Byte76;
  protected Byte Byte77;
  protected Byte Byte78;
  protected Byte Byte79;
  protected static Byte Byte80;
  protected transient Byte Byte81;
  protected transient Byte Byte82;
  protected transient Byte Byte83;
  protected transient Byte Byte84;
  protected transient Byte Byte85;
  protected transient Byte Byte86;
  protected final Byte Byte87 = Byte.valueOf((byte) 5);
  protected volatile Byte Byte88;
  protected volatile Byte Byte89;
  protected volatile Byte Byte90;
  protected volatile Byte Byte91;
  protected volatile Byte Byte92;
  protected volatile Byte Byte93;
  protected volatile Byte Byte94;
  protected volatile Byte Byte95;
  protected static transient Byte Byte96;
  protected static final Byte Byte97 = Byte.valueOf((byte) 5);
  protected static volatile Byte Byte98;
  protected final transient Byte Byte99 = Byte.valueOf((byte) 5);
  protected transient volatile Byte Byte100;
  protected transient volatile Byte Byte101;
  protected transient volatile Byte Byte102;
  protected transient volatile Byte Byte103;
  protected transient volatile Byte Byte104;
  protected transient volatile Byte Byte105;
  protected static final transient Byte Byte106 = Byte.valueOf((byte) 5);
  protected static transient volatile Byte Byte107;
  Byte Byte108;
  Byte Byte109;
  Byte Byte110;
  Byte Byte111;
  Byte Byte112;
  Byte Byte113;
  Byte Byte114;
  Byte Byte115;
  static Byte Byte116;
  transient Byte Byte117;
  transient Byte Byte118;
  transient Byte Byte119;
  transient Byte Byte120;
  transient Byte Byte121;
  transient Byte Byte122;
  final Byte Byte123 = Byte.valueOf((byte) 5);
  volatile Byte Byte124;
  volatile Byte Byte125;
  volatile Byte Byte126;
  volatile Byte Byte127;
  volatile Byte Byte128;
  volatile Byte Byte129;
  volatile Byte Byte130;
  volatile Byte Byte131;
  static transient Byte Byte132;
  static final Byte Byte133 = Byte.valueOf((byte) 5);
  static volatile Byte Byte134;
  final transient Byte Byte135 = Byte.valueOf((byte) 5);
  transient volatile Byte Byte136;
  transient volatile Byte Byte137;
  transient volatile Byte Byte138;
  transient volatile Byte Byte139;
  transient volatile Byte Byte140;
  transient volatile Byte Byte141;
  static final transient Byte Byte142 = Byte.valueOf((byte) 5);
  static transient volatile Byte Byte143;

  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 Byte Byte0",
    "embedded= true   private Byte Byte1",
    "embedded= false   private Byte Byte2",
    "persistence-modifier= none    private Byte Byte3",
    "persistence-modifier= persistent    private Byte Byte4",
    "persistence-modifier= persistent  embedded= true   private Byte Byte5",
    "persistence-modifier= persistent  embedded= false   private Byte Byte6",
    "persistence-modifier= transactional    private Byte Byte7",
    "private static Byte Byte8",
    "private transient Byte Byte9",
    "persistence-modifier= none    private transient Byte Byte10",
    "persistence-modifier= persistent    private transient Byte Byte11",
    "persistence-modifier= persistent  embedded= true   private transient Byte Byte12",
    "persistence-modifier= persistent  embedded= false   private transient Byte Byte13",
    "persistence-modifier= transactional    private transient Byte Byte14",
    "private final Byte Byte15",
    "private volatile Byte Byte16",
    "embedded= true   private volatile Byte Byte17",
    "embedded= false   private volatile Byte Byte18",
    "persistence-modifier= none    private volatile Byte Byte19",
    "persistence-modifier= persistent    private volatile Byte Byte20",
    "persistence-modifier= persistent  embedded= true   private volatile Byte Byte21",
    "persistence-modifier= persistent  embedded= false   private volatile Byte Byte22",
    "persistence-modifier= transactional    private volatile Byte Byte23",
    "private static transient Byte Byte24",
    "private static final Byte Byte25",
    "private static volatile Byte Byte26",
    "private transient final Byte Byte27",
    "private transient volatile Byte Byte28",
    "persistence-modifier= none    private transient volatile Byte Byte29",
    "persistence-modifier= persistent    private transient volatile Byte Byte30",
    "persistence-modifier= persistent  embedded= true   private transient volatile Byte Byte31",
    "persistence-modifier= persistent  embedded= false   private transient volatile Byte Byte32",
    "persistence-modifier= transactional    private transient volatile Byte Byte33",
    "private static transient final Byte Byte34",
    "private static transient volatile Byte Byte35",
    "public Byte Byte36",
    "embedded= true   public Byte Byte37",
    "embedded= false   public Byte Byte38",
    "persistence-modifier= none    public Byte Byte39",
    "persistence-modifier= persistent    public Byte Byte40",
    "persistence-modifier= persistent  embedded= true   public Byte Byte41",
    "persistence-modifier= persistent  embedded= false   public Byte Byte42",
    "persistence-modifier= transactional    public Byte Byte43",
    "public static Byte Byte44",
    "public transient Byte Byte45",
    "persistence-modifier= none    public transient Byte Byte46",
    "persistence-modifier= persistent    public transient Byte Byte47",
    "persistence-modifier= persistent  embedded= true   public transient Byte Byte48",
    "persistence-modifier= persistent  embedded= false   public transient Byte Byte49",
    "persistence-modifier= transactional    public transient Byte Byte50",
    "public final Byte Byte51",
    "public volatile Byte Byte52",
    "embedded= true   public volatile Byte Byte53",
    "embedded= false   public volatile Byte Byte54",
    "persistence-modifier= none    public volatile Byte Byte55",
    "persistence-modifier= persistent    public volatile Byte Byte56",
    "persistence-modifier= persistent  embedded= true   public volatile Byte Byte57",
    "persistence-modifier= persistent  embedded= false   public volatile Byte Byte58",
    "persistence-modifier= transactional    public volatile Byte Byte59",
    "public static transient Byte Byte60",
    "public static final Byte Byte61",
    "public static volatile Byte Byte62",
    "public transient final Byte Byte63",
    "public transient volatile Byte Byte64",
    "persistence-modifier= none    public transient volatile Byte Byte65",
    "persistence-modifier= persistent    public transient volatile Byte Byte66",
    "persistence-modifier= persistent  embedded= true   public transient volatile Byte Byte67",
    "persistence-modifier= persistent  embedded= false   public transient volatile Byte Byte68",
    "persistence-modifier= transactional    public transient volatile Byte Byte69",
    "public static transient final Byte Byte70",
    "public static transient volatile Byte Byte71",
    "protected Byte Byte72",
    "embedded= true   protected Byte Byte73",
    "embedded= false   protected Byte Byte74",
    "persistence-modifier= none    protected Byte Byte75",
    "persistence-modifier= persistent    protected Byte Byte76",
    "persistence-modifier= persistent  embedded= true   protected Byte Byte77",
    "persistence-modifier= persistent  embedded= false   protected Byte Byte78",
    "persistence-modifier= transactional    protected Byte Byte79",
    "protected static Byte Byte80",
    "protected transient Byte Byte81",
    "persistence-modifier= none    protected transient Byte Byte82",
    "persistence-modifier= persistent    protected transient Byte Byte83",
    "persistence-modifier= persistent  embedded= true   protected transient Byte Byte84",
    "persistence-modifier= persistent  embedded= false   protected transient Byte Byte85",
    "persistence-modifier= transactional    protected transient Byte Byte86",
    "protected final Byte Byte87",
    "protected volatile Byte Byte88",
    "embedded= true   protected volatile Byte Byte89",
    "embedded= false   protected volatile Byte Byte90",
    "persistence-modifier= none    protected volatile Byte Byte91",
    "persistence-modifier= persistent    protected volatile Byte Byte92",
    "persistence-modifier= persistent  embedded= true   protected volatile Byte Byte93",
    "persistence-modifier= persistent  embedded= false   protected volatile Byte Byte94",
    "persistence-modifier= transactional    protected volatile Byte Byte95",
    "protected static transient Byte Byte96",
    "protected static final Byte Byte97",
    "protected static volatile Byte Byte98",
    "protected transient final Byte Byte99",
    "protected transient volatile Byte Byte100",
    "persistence-modifier= none    protected transient volatile Byte Byte101",
    "persistence-modifier= persistent    protected transient volatile Byte Byte102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile Byte Byte103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile Byte Byte104",
    "persistence-modifier= transactional    protected transient volatile Byte Byte105",
    "protected static transient final Byte Byte106",
    "protected static transient volatile Byte Byte107",
    "Byte Byte108",
    "embedded= true   Byte Byte109",
    "embedded= false   Byte Byte110",
    "persistence-modifier= none    Byte Byte111",
    "persistence-modifier= persistent    Byte Byte112",
    "persistence-modifier= persistent  embedded= true   Byte Byte113",
    "persistence-modifier= persistent  embedded= false   Byte Byte114",
    "persistence-modifier= transactional    Byte Byte115",
    "static Byte Byte116",
    "transient Byte Byte117",
    "persistence-modifier= none    transient Byte Byte118",
    "persistence-modifier= persistent    transient Byte Byte119",
    "persistence-modifier= persistent  embedded= true   transient Byte Byte120",
    "persistence-modifier= persistent  embedded= false   transient Byte Byte121",
    "persistence-modifier= transactional    transient Byte Byte122",
    "final Byte Byte123",
    "volatile Byte Byte124",
    "embedded= true   volatile Byte Byte125",
    "embedded= false   volatile Byte Byte126",
    "persistence-modifier= none    volatile Byte Byte127",
    "persistence-modifier= persistent    volatile Byte Byte128",
    "persistence-modifier= persistent  embedded= true   volatile Byte Byte129",
    "persistence-modifier= persistent  embedded= false   volatile Byte Byte130",
    "persistence-modifier= transactional    volatile Byte Byte131",
    "static transient Byte Byte132",
    "static final Byte Byte133",
    "static volatile Byte Byte134",
    "transient final Byte Byte135",
    "transient volatile Byte Byte136",
    "persistence-modifier= none    transient volatile Byte Byte137",
    "persistence-modifier= persistent    transient volatile Byte Byte138",
    "persistence-modifier= persistent  embedded= true   transient volatile Byte Byte139",
    "persistence-modifier= persistent  embedded= false   transient volatile Byte Byte140",
    "persistence-modifier= transactional    transient volatile Byte Byte141",
    "static transient final Byte Byte142",
    "static transient volatile Byte Byte143"
  };

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

  public Byte get(int index) {
    switch (index) {
      case (0):
        return Byte0;
      case (1):
        return Byte1;
      case (2):
        return Byte2;
      case (3):
        return Byte3;
      case (4):
        return Byte4;
      case (5):
        return Byte5;
      case (6):
        return Byte6;
      case (7):
        return Byte7;
      case (8):
        return Byte8;
      case (9):
        return Byte9;
      case (10):
        return Byte10;
      case (11):
        return Byte11;
      case (12):
        return Byte12;
      case (13):
        return Byte13;
      case (14):
        return Byte14;
      case (15):
        return Byte15;
      case (16):
        return Byte16;
      case (17):
        return Byte17;
      case (18):
        return Byte18;
      case (19):
        return Byte19;
      case (20):
        return Byte20;
      case (21):
        return Byte21;
      case (22):
        return Byte22;
      case (23):
        return Byte23;
      case (24):
        return Byte24;
      case (25):
        return Byte25;
      case (26):
        return Byte26;
      case (27):
        return Byte27;
      case (28):
        return Byte28;
      case (29):
        return Byte29;
      case (30):
        return Byte30;
      case (31):
        return Byte31;
      case (32):
        return Byte32;
      case (33):
        return Byte33;
      case (34):
        return Byte34;
      case (35):
        return Byte35;
      case (36):
        return Byte36;
      case (37):
        return Byte37;
      case (38):
        return Byte38;
      case (39):
        return Byte39;
      case (40):
        return Byte40;
      case (41):
        return Byte41;
      case (42):
        return Byte42;
      case (43):
        return Byte43;
      case (44):
        return Byte44;
      case (45):
        return Byte45;
      case (46):
        return Byte46;
      case (47):
        return Byte47;
      case (48):
        return Byte48;
      case (49):
        return Byte49;
      case (50):
        return Byte50;
      case (51):
        return Byte51;
      case (52):
        return Byte52;
      case (53):
        return Byte53;
      case (54):
        return Byte54;
      case (55):
        return Byte55;
      case (56):
        return Byte56;
      case (57):
        return Byte57;
      case (58):
        return Byte58;
      case (59):
        return Byte59;
      case (60):
        return Byte60;
      case (61):
        return Byte61;
      case (62):
        return Byte62;
      case (63):
        return Byte63;
      case (64):
        return Byte64;
      case (65):
        return Byte65;
      case (66):
        return Byte66;
      case (67):
        return Byte67;
      case (68):
        return Byte68;
      case (69):
        return Byte69;
      case (70):
        return Byte70;
      case (71):
        return Byte71;
      case (72):
        return Byte72;
      case (73):
        return Byte73;
      case (74):
        return Byte74;
      case (75):
        return Byte75;
      case (76):
        return Byte76;
      case (77):
        return Byte77;
      case (78):
        return Byte78;
      case (79):
        return Byte79;
      case (80):
        return Byte80;
      case (81):
        return Byte81;
      case (82):
        return Byte82;
      case (83):
        return Byte83;
      case (84):
        return Byte84;
      case (85):
        return Byte85;
      case (86):
        return Byte86;
      case (87):
        return Byte87;
      case (88):
        return Byte88;
      case (89):
        return Byte89;
      case (90):
        return Byte90;
      case (91):
        return Byte91;
      case (92):
        return Byte92;
      case (93):
        return Byte93;
      case (94):
        return Byte94;
      case (95):
        return Byte95;
      case (96):
        return Byte96;
      case (97):
        return Byte97;
      case (98):
        return Byte98;
      case (99):
        return Byte99;
      case (100):
        return Byte100;
      case (101):
        return Byte101;
      case (102):
        return Byte102;
      case (103):
        return Byte103;
      case (104):
        return Byte104;
      case (105):
        return Byte105;
      case (106):
        return Byte106;
      case (107):
        return Byte107;
      case (108):
        return Byte108;
      case (109):
        return Byte109;
      case (110):
        return Byte110;
      case (111):
        return Byte111;
      case (112):
        return Byte112;
      case (113):
        return Byte113;
      case (114):
        return Byte114;
      case (115):
        return Byte115;
      case (116):
        return Byte116;
      case (117):
        return Byte117;
      case (118):
        return Byte118;
      case (119):
        return Byte119;
      case (120):
        return Byte120;
      case (121):
        return Byte121;
      case (122):
        return Byte122;
      case (123):
        return Byte123;
      case (124):
        return Byte124;
      case (125):
        return Byte125;
      case (126):
        return Byte126;
      case (127):
        return Byte127;
      case (128):
        return Byte128;
      case (129):
        return Byte129;
      case (130):
        return Byte130;
      case (131):
        return Byte131;
      case (132):
        return Byte132;
      case (133):
        return Byte133;
      case (134):
        return Byte134;
      case (135):
        return Byte135;
      case (136):
        return Byte136;
      case (137):
        return Byte137;
      case (138):
        return Byte138;
      case (139):
        return Byte139;
      case (140):
        return Byte140;
      case (141):
        return Byte141;
      case (142):
        return Byte142;
      case (143):
        return Byte143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, Byte value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        Byte0 = value;
        break;
      case (1):
        Byte1 = value;
        break;
      case (2):
        Byte2 = value;
        break;
      case (3):
        Byte3 = value;
        break;
      case (4):
        Byte4 = value;
        break;
      case (5):
        Byte5 = value;
        break;
      case (6):
        Byte6 = value;
        break;
      case (7):
        Byte7 = value;
        break;
      case (8):
        Byte8 = value;
        break;
      case (9):
        Byte9 = value;
        break;
      case (10):
        Byte10 = value;
        break;
      case (11):
        Byte11 = value;
        break;
      case (12):
        Byte12 = value;
        break;
      case (13):
        Byte13 = value;
        break;
      case (14):
        Byte14 = value;
        break;
      case (16):
        Byte16 = value;
        break;
      case (17):
        Byte17 = value;
        break;
      case (18):
        Byte18 = value;
        break;
      case (19):
        Byte19 = value;
        break;
      case (20):
        Byte20 = value;
        break;
      case (21):
        Byte21 = value;
        break;
      case (22):
        Byte22 = value;
        break;
      case (23):
        Byte23 = value;
        break;
      case (24):
        Byte24 = value;
        break;
      case (26):
        Byte26 = value;
        break;
      case (28):
        Byte28 = value;
        break;
      case (29):
        Byte29 = value;
        break;
      case (30):
        Byte30 = value;
        break;
      case (31):
        Byte31 = value;
        break;
      case (32):
        Byte32 = value;
        break;
      case (33):
        Byte33 = value;
        break;
      case (35):
        Byte35 = value;
        break;
      case (36):
        Byte36 = value;
        break;
      case (37):
        Byte37 = value;
        break;
      case (38):
        Byte38 = value;
        break;
      case (39):
        Byte39 = value;
        break;
      case (40):
        Byte40 = value;
        break;
      case (41):
        Byte41 = value;
        break;
      case (42):
        Byte42 = value;
        break;
      case (43):
        Byte43 = value;
        break;
      case (44):
        Byte44 = value;
        break;
      case (45):
        Byte45 = value;
        break;
      case (46):
        Byte46 = value;
        break;
      case (47):
        Byte47 = value;
        break;
      case (48):
        Byte48 = value;
        break;
      case (49):
        Byte49 = value;
        break;
      case (50):
        Byte50 = value;
        break;
      case (52):
        Byte52 = value;
        break;
      case (53):
        Byte53 = value;
        break;
      case (54):
        Byte54 = value;
        break;
      case (55):
        Byte55 = value;
        break;
      case (56):
        Byte56 = value;
        break;
      case (57):
        Byte57 = value;
        break;
      case (58):
        Byte58 = value;
        break;
      case (59):
        Byte59 = value;
        break;
      case (60):
        Byte60 = value;
        break;
      case (62):
        Byte62 = value;
        break;
      case (64):
        Byte64 = value;
        break;
      case (65):
        Byte65 = value;
        break;
      case (66):
        Byte66 = value;
        break;
      case (67):
        Byte67 = value;
        break;
      case (68):
        Byte68 = value;
        break;
      case (69):
        Byte69 = value;
        break;
      case (71):
        Byte71 = value;
        break;
      case (72):
        Byte72 = value;
        break;
      case (73):
        Byte73 = value;
        break;
      case (74):
        Byte74 = value;
        break;
      case (75):
        Byte75 = value;
        break;
      case (76):
        Byte76 = value;
        break;
      case (77):
        Byte77 = value;
        break;
      case (78):
        Byte78 = value;
        break;
      case (79):
        Byte79 = value;
        break;
      case (80):
        Byte80 = value;
        break;
      case (81):
        Byte81 = value;
        break;
      case (82):
        Byte82 = value;
        break;
      case (83):
        Byte83 = value;
        break;
      case (84):
        Byte84 = value;
        break;
      case (85):
        Byte85 = value;
        break;
      case (86):
        Byte86 = value;
        break;
      case (88):
        Byte88 = value;
        break;
      case (89):
        Byte89 = value;
        break;
      case (90):
        Byte90 = value;
        break;
      case (91):
        Byte91 = value;
        break;
      case (92):
        Byte92 = value;
        break;
      case (93):
        Byte93 = value;
        break;
      case (94):
        Byte94 = value;
        break;
      case (95):
        Byte95 = value;
        break;
      case (96):
        Byte96 = value;
        break;
      case (98):
        Byte98 = value;
        break;
      case (100):
        Byte100 = value;
        break;
      case (101):
        Byte101 = value;
        break;
      case (102):
        Byte102 = value;
        break;
      case (103):
        Byte103 = value;
        break;
      case (104):
        Byte104 = value;
        break;
      case (105):
        Byte105 = value;
        break;
      case (107):
        Byte107 = value;
        break;
      case (108):
        Byte108 = value;
        break;
      case (109):
        Byte109 = value;
        break;
      case (110):
        Byte110 = value;
        break;
      case (111):
        Byte111 = value;
        break;
      case (112):
        Byte112 = value;
        break;
      case (113):
        Byte113 = value;
        break;
      case (114):
        Byte114 = value;
        break;
      case (115):
        Byte115 = value;
        break;
      case (116):
        Byte116 = value;
        break;
      case (117):
        Byte117 = value;
        break;
      case (118):
        Byte118 = value;
        break;
      case (119):
        Byte119 = value;
        break;
      case (120):
        Byte120 = value;
        break;
      case (121):
        Byte121 = value;
        break;
      case (122):
        Byte122 = value;
        break;
      case (124):
        Byte124 = value;
        break;
      case (125):
        Byte125 = value;
        break;
      case (126):
        Byte126 = value;
        break;
      case (127):
        Byte127 = value;
        break;
      case (128):
        Byte128 = value;
        break;
      case (129):
        Byte129 = value;
        break;
      case (130):
        Byte130 = value;
        break;
      case (131):
        Byte131 = value;
        break;
      case (132):
        Byte132 = value;
        break;
      case (134):
        Byte134 = value;
        break;
      case (136):
        Byte136 = value;
        break;
      case (137):
        Byte137 = value;
        break;
      case (138):
        Byte138 = value;
        break;
      case (139):
        Byte139 = value;
        break;
      case (140):
        Byte140 = value;
        break;
      case (141):
        Byte141 = value;
        break;
      case (143):
        Byte143 = 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);
    }
  }
}
