/*
 * 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 FieldsOfBoolean {
  public int identifier;
  private Boolean Boolean0;
  private Boolean Boolean1;
  private Boolean Boolean2;
  private Boolean Boolean3;
  private Boolean Boolean4;
  private Boolean Boolean5;
  private Boolean Boolean6;
  private Boolean Boolean7;
  private static Boolean Boolean8;
  private transient Boolean Boolean9;
  private transient Boolean Boolean10;
  private transient Boolean Boolean11;
  private transient Boolean Boolean12;
  private transient Boolean Boolean13;
  private transient Boolean Boolean14;
  private final Boolean Boolean15 = Boolean.FALSE;
  private volatile Boolean Boolean16;
  private volatile Boolean Boolean17;
  private volatile Boolean Boolean18;
  private volatile Boolean Boolean19;
  private volatile Boolean Boolean20;
  private volatile Boolean Boolean21;
  private volatile Boolean Boolean22;
  private volatile Boolean Boolean23;
  private static transient Boolean Boolean24;
  private static final Boolean Boolean25 = Boolean.FALSE;
  private static volatile Boolean Boolean26;
  private final transient Boolean Boolean27 = Boolean.FALSE;
  private transient volatile Boolean Boolean28;
  private transient volatile Boolean Boolean29;
  private transient volatile Boolean Boolean30;
  private transient volatile Boolean Boolean31;
  private transient volatile Boolean Boolean32;
  private transient volatile Boolean Boolean33;
  private static final transient Boolean Boolean34 = Boolean.FALSE;
  private static transient volatile Boolean Boolean35;
  public Boolean Boolean36;
  public Boolean Boolean37;
  public Boolean Boolean38;
  public Boolean Boolean39;
  public Boolean Boolean40;
  public Boolean Boolean41;
  public Boolean Boolean42;
  public Boolean Boolean43;
  public static Boolean Boolean44;
  public transient Boolean Boolean45;
  public transient Boolean Boolean46;
  public transient Boolean Boolean47;
  public transient Boolean Boolean48;
  public transient Boolean Boolean49;
  public transient Boolean Boolean50;
  public final Boolean Boolean51 = Boolean.FALSE;
  public volatile Boolean Boolean52;
  public volatile Boolean Boolean53;
  public volatile Boolean Boolean54;
  public volatile Boolean Boolean55;
  public volatile Boolean Boolean56;
  public volatile Boolean Boolean57;
  public volatile Boolean Boolean58;
  public volatile Boolean Boolean59;
  public static transient Boolean Boolean60;
  public static final Boolean Boolean61 = Boolean.FALSE;
  public static volatile Boolean Boolean62;
  public final transient Boolean Boolean63 = Boolean.FALSE;
  public transient volatile Boolean Boolean64;
  public transient volatile Boolean Boolean65;
  public transient volatile Boolean Boolean66;
  public transient volatile Boolean Boolean67;
  public transient volatile Boolean Boolean68;
  public transient volatile Boolean Boolean69;
  public static final transient Boolean Boolean70 = Boolean.FALSE;
  public static transient volatile Boolean Boolean71;
  protected Boolean Boolean72;
  protected Boolean Boolean73;
  protected Boolean Boolean74;
  protected Boolean Boolean75;
  protected Boolean Boolean76;
  protected Boolean Boolean77;
  protected Boolean Boolean78;
  protected Boolean Boolean79;
  protected static Boolean Boolean80;
  protected transient Boolean Boolean81;
  protected transient Boolean Boolean82;
  protected transient Boolean Boolean83;
  protected transient Boolean Boolean84;
  protected transient Boolean Boolean85;
  protected transient Boolean Boolean86;
  protected final Boolean Boolean87 = Boolean.FALSE;
  protected volatile Boolean Boolean88;
  protected volatile Boolean Boolean89;
  protected volatile Boolean Boolean90;
  protected volatile Boolean Boolean91;
  protected volatile Boolean Boolean92;
  protected volatile Boolean Boolean93;
  protected volatile Boolean Boolean94;
  protected volatile Boolean Boolean95;
  protected static transient Boolean Boolean96;
  protected static final Boolean Boolean97 = Boolean.FALSE;
  protected static volatile Boolean Boolean98;
  protected final transient Boolean Boolean99 = Boolean.FALSE;
  protected transient volatile Boolean Boolean100;
  protected transient volatile Boolean Boolean101;
  protected transient volatile Boolean Boolean102;
  protected transient volatile Boolean Boolean103;
  protected transient volatile Boolean Boolean104;
  protected transient volatile Boolean Boolean105;
  protected static final transient Boolean Boolean106 = Boolean.FALSE;
  protected static transient volatile Boolean Boolean107;
  Boolean Boolean108;
  Boolean Boolean109;
  Boolean Boolean110;
  Boolean Boolean111;
  Boolean Boolean112;
  Boolean Boolean113;
  Boolean Boolean114;
  Boolean Boolean115;
  static Boolean Boolean116;
  transient Boolean Boolean117;
  transient Boolean Boolean118;
  transient Boolean Boolean119;
  transient Boolean Boolean120;
  transient Boolean Boolean121;
  transient Boolean Boolean122;
  final Boolean Boolean123 = Boolean.FALSE;
  volatile Boolean Boolean124;
  volatile Boolean Boolean125;
  volatile Boolean Boolean126;
  volatile Boolean Boolean127;
  volatile Boolean Boolean128;
  volatile Boolean Boolean129;
  volatile Boolean Boolean130;
  volatile Boolean Boolean131;
  static transient Boolean Boolean132;
  static final Boolean Boolean133 = Boolean.FALSE;
  static volatile Boolean Boolean134;
  final transient Boolean Boolean135 = Boolean.FALSE;
  transient volatile Boolean Boolean136;
  transient volatile Boolean Boolean137;
  transient volatile Boolean Boolean138;
  transient volatile Boolean Boolean139;
  transient volatile Boolean Boolean140;
  transient volatile Boolean Boolean141;
  static final transient Boolean Boolean142 = Boolean.FALSE;
  static transient volatile Boolean Boolean143;

  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 Boolean Boolean0",
    "embedded= true   private Boolean Boolean1",
    "embedded= false   private Boolean Boolean2",
    "persistence-modifier= none    private Boolean Boolean3",
    "persistence-modifier= persistent    private Boolean Boolean4",
    "persistence-modifier= persistent  embedded= true   private Boolean Boolean5",
    "persistence-modifier= persistent  embedded= false   private Boolean Boolean6",
    "persistence-modifier= transactional    private Boolean Boolean7",
    "private static Boolean Boolean8",
    "private transient Boolean Boolean9",
    "persistence-modifier= none    private transient Boolean Boolean10",
    "persistence-modifier= persistent    private transient Boolean Boolean11",
    "persistence-modifier= persistent  embedded= true   private transient Boolean Boolean12",
    "persistence-modifier= persistent  embedded= false   private transient Boolean Boolean13",
    "persistence-modifier= transactional    private transient Boolean Boolean14",
    "private final Boolean Boolean15",
    "private volatile Boolean Boolean16",
    "embedded= true   private volatile Boolean Boolean17",
    "embedded= false   private volatile Boolean Boolean18",
    "persistence-modifier= none    private volatile Boolean Boolean19",
    "persistence-modifier= persistent    private volatile Boolean Boolean20",
    "persistence-modifier= persistent  embedded= true   private volatile Boolean Boolean21",
    "persistence-modifier= persistent  embedded= false   private volatile Boolean Boolean22",
    "persistence-modifier= transactional    private volatile Boolean Boolean23",
    "private static transient Boolean Boolean24",
    "private static final Boolean Boolean25",
    "private static volatile Boolean Boolean26",
    "private transient final Boolean Boolean27",
    "private transient volatile Boolean Boolean28",
    "persistence-modifier= none    private transient volatile Boolean Boolean29",
    "persistence-modifier= persistent    private transient volatile Boolean Boolean30",
    "persistence-modifier= persistent  embedded= true   private transient volatile Boolean Boolean31",
    "persistence-modifier= persistent  embedded= false   private transient volatile Boolean Boolean32",
    "persistence-modifier= transactional    private transient volatile Boolean Boolean33",
    "private static transient final Boolean Boolean34",
    "private static transient volatile Boolean Boolean35",
    "public Boolean Boolean36",
    "embedded= true   public Boolean Boolean37",
    "embedded= false   public Boolean Boolean38",
    "persistence-modifier= none    public Boolean Boolean39",
    "persistence-modifier= persistent    public Boolean Boolean40",
    "persistence-modifier= persistent  embedded= true   public Boolean Boolean41",
    "persistence-modifier= persistent  embedded= false   public Boolean Boolean42",
    "persistence-modifier= transactional    public Boolean Boolean43",
    "public static Boolean Boolean44",
    "public transient Boolean Boolean45",
    "persistence-modifier= none    public transient Boolean Boolean46",
    "persistence-modifier= persistent    public transient Boolean Boolean47",
    "persistence-modifier= persistent  embedded= true   public transient Boolean Boolean48",
    "persistence-modifier= persistent  embedded= false   public transient Boolean Boolean49",
    "persistence-modifier= transactional    public transient Boolean Boolean50",
    "public final Boolean Boolean51",
    "public volatile Boolean Boolean52",
    "embedded= true   public volatile Boolean Boolean53",
    "embedded= false   public volatile Boolean Boolean54",
    "persistence-modifier= none    public volatile Boolean Boolean55",
    "persistence-modifier= persistent    public volatile Boolean Boolean56",
    "persistence-modifier= persistent  embedded= true   public volatile Boolean Boolean57",
    "persistence-modifier= persistent  embedded= false   public volatile Boolean Boolean58",
    "persistence-modifier= transactional    public volatile Boolean Boolean59",
    "public static transient Boolean Boolean60",
    "public static final Boolean Boolean61",
    "public static volatile Boolean Boolean62",
    "public transient final Boolean Boolean63",
    "public transient volatile Boolean Boolean64",
    "persistence-modifier= none    public transient volatile Boolean Boolean65",
    "persistence-modifier= persistent    public transient volatile Boolean Boolean66",
    "persistence-modifier= persistent  embedded= true   public transient volatile Boolean Boolean67",
    "persistence-modifier= persistent  embedded= false   public transient volatile Boolean Boolean68",
    "persistence-modifier= transactional    public transient volatile Boolean Boolean69",
    "public static transient final Boolean Boolean70",
    "public static transient volatile Boolean Boolean71",
    "protected Boolean Boolean72",
    "embedded= true   protected Boolean Boolean73",
    "embedded= false   protected Boolean Boolean74",
    "persistence-modifier= none    protected Boolean Boolean75",
    "persistence-modifier= persistent    protected Boolean Boolean76",
    "persistence-modifier= persistent  embedded= true   protected Boolean Boolean77",
    "persistence-modifier= persistent  embedded= false   protected Boolean Boolean78",
    "persistence-modifier= transactional    protected Boolean Boolean79",
    "protected static Boolean Boolean80",
    "protected transient Boolean Boolean81",
    "persistence-modifier= none    protected transient Boolean Boolean82",
    "persistence-modifier= persistent    protected transient Boolean Boolean83",
    "persistence-modifier= persistent  embedded= true   protected transient Boolean Boolean84",
    "persistence-modifier= persistent  embedded= false   protected transient Boolean Boolean85",
    "persistence-modifier= transactional    protected transient Boolean Boolean86",
    "protected final Boolean Boolean87",
    "protected volatile Boolean Boolean88",
    "embedded= true   protected volatile Boolean Boolean89",
    "embedded= false   protected volatile Boolean Boolean90",
    "persistence-modifier= none    protected volatile Boolean Boolean91",
    "persistence-modifier= persistent    protected volatile Boolean Boolean92",
    "persistence-modifier= persistent  embedded= true   protected volatile Boolean Boolean93",
    "persistence-modifier= persistent  embedded= false   protected volatile Boolean Boolean94",
    "persistence-modifier= transactional    protected volatile Boolean Boolean95",
    "protected static transient Boolean Boolean96",
    "protected static final Boolean Boolean97",
    "protected static volatile Boolean Boolean98",
    "protected transient final Boolean Boolean99",
    "protected transient volatile Boolean Boolean100",
    "persistence-modifier= none    protected transient volatile Boolean Boolean101",
    "persistence-modifier= persistent    protected transient volatile Boolean Boolean102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile Boolean Boolean103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile Boolean Boolean104",
    "persistence-modifier= transactional    protected transient volatile Boolean Boolean105",
    "protected static transient final Boolean Boolean106",
    "protected static transient volatile Boolean Boolean107",
    "Boolean Boolean108",
    "embedded= true   Boolean Boolean109",
    "embedded= false   Boolean Boolean110",
    "persistence-modifier= none    Boolean Boolean111",
    "persistence-modifier= persistent    Boolean Boolean112",
    "persistence-modifier= persistent  embedded= true   Boolean Boolean113",
    "persistence-modifier= persistent  embedded= false   Boolean Boolean114",
    "persistence-modifier= transactional    Boolean Boolean115",
    "static Boolean Boolean116",
    "transient Boolean Boolean117",
    "persistence-modifier= none    transient Boolean Boolean118",
    "persistence-modifier= persistent    transient Boolean Boolean119",
    "persistence-modifier= persistent  embedded= true   transient Boolean Boolean120",
    "persistence-modifier= persistent  embedded= false   transient Boolean Boolean121",
    "persistence-modifier= transactional    transient Boolean Boolean122",
    "final Boolean Boolean123",
    "volatile Boolean Boolean124",
    "embedded= true   volatile Boolean Boolean125",
    "embedded= false   volatile Boolean Boolean126",
    "persistence-modifier= none    volatile Boolean Boolean127",
    "persistence-modifier= persistent    volatile Boolean Boolean128",
    "persistence-modifier= persistent  embedded= true   volatile Boolean Boolean129",
    "persistence-modifier= persistent  embedded= false   volatile Boolean Boolean130",
    "persistence-modifier= transactional    volatile Boolean Boolean131",
    "static transient Boolean Boolean132",
    "static final Boolean Boolean133",
    "static volatile Boolean Boolean134",
    "transient final Boolean Boolean135",
    "transient volatile Boolean Boolean136",
    "persistence-modifier= none    transient volatile Boolean Boolean137",
    "persistence-modifier= persistent    transient volatile Boolean Boolean138",
    "persistence-modifier= persistent  embedded= true   transient volatile Boolean Boolean139",
    "persistence-modifier= persistent  embedded= false   transient volatile Boolean Boolean140",
    "persistence-modifier= transactional    transient volatile Boolean Boolean141",
    "static transient final Boolean Boolean142",
    "static transient volatile Boolean Boolean143"
  };

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

  public Boolean get(int index) {
    switch (index) {
      case (0):
        return Boolean0;
      case (1):
        return Boolean1;
      case (2):
        return Boolean2;
      case (3):
        return Boolean3;
      case (4):
        return Boolean4;
      case (5):
        return Boolean5;
      case (6):
        return Boolean6;
      case (7):
        return Boolean7;
      case (8):
        return Boolean8;
      case (9):
        return Boolean9;
      case (10):
        return Boolean10;
      case (11):
        return Boolean11;
      case (12):
        return Boolean12;
      case (13):
        return Boolean13;
      case (14):
        return Boolean14;
      case (15):
        return Boolean15;
      case (16):
        return Boolean16;
      case (17):
        return Boolean17;
      case (18):
        return Boolean18;
      case (19):
        return Boolean19;
      case (20):
        return Boolean20;
      case (21):
        return Boolean21;
      case (22):
        return Boolean22;
      case (23):
        return Boolean23;
      case (24):
        return Boolean24;
      case (25):
        return Boolean25;
      case (26):
        return Boolean26;
      case (27):
        return Boolean27;
      case (28):
        return Boolean28;
      case (29):
        return Boolean29;
      case (30):
        return Boolean30;
      case (31):
        return Boolean31;
      case (32):
        return Boolean32;
      case (33):
        return Boolean33;
      case (34):
        return Boolean34;
      case (35):
        return Boolean35;
      case (36):
        return Boolean36;
      case (37):
        return Boolean37;
      case (38):
        return Boolean38;
      case (39):
        return Boolean39;
      case (40):
        return Boolean40;
      case (41):
        return Boolean41;
      case (42):
        return Boolean42;
      case (43):
        return Boolean43;
      case (44):
        return Boolean44;
      case (45):
        return Boolean45;
      case (46):
        return Boolean46;
      case (47):
        return Boolean47;
      case (48):
        return Boolean48;
      case (49):
        return Boolean49;
      case (50):
        return Boolean50;
      case (51):
        return Boolean51;
      case (52):
        return Boolean52;
      case (53):
        return Boolean53;
      case (54):
        return Boolean54;
      case (55):
        return Boolean55;
      case (56):
        return Boolean56;
      case (57):
        return Boolean57;
      case (58):
        return Boolean58;
      case (59):
        return Boolean59;
      case (60):
        return Boolean60;
      case (61):
        return Boolean61;
      case (62):
        return Boolean62;
      case (63):
        return Boolean63;
      case (64):
        return Boolean64;
      case (65):
        return Boolean65;
      case (66):
        return Boolean66;
      case (67):
        return Boolean67;
      case (68):
        return Boolean68;
      case (69):
        return Boolean69;
      case (70):
        return Boolean70;
      case (71):
        return Boolean71;
      case (72):
        return Boolean72;
      case (73):
        return Boolean73;
      case (74):
        return Boolean74;
      case (75):
        return Boolean75;
      case (76):
        return Boolean76;
      case (77):
        return Boolean77;
      case (78):
        return Boolean78;
      case (79):
        return Boolean79;
      case (80):
        return Boolean80;
      case (81):
        return Boolean81;
      case (82):
        return Boolean82;
      case (83):
        return Boolean83;
      case (84):
        return Boolean84;
      case (85):
        return Boolean85;
      case (86):
        return Boolean86;
      case (87):
        return Boolean87;
      case (88):
        return Boolean88;
      case (89):
        return Boolean89;
      case (90):
        return Boolean90;
      case (91):
        return Boolean91;
      case (92):
        return Boolean92;
      case (93):
        return Boolean93;
      case (94):
        return Boolean94;
      case (95):
        return Boolean95;
      case (96):
        return Boolean96;
      case (97):
        return Boolean97;
      case (98):
        return Boolean98;
      case (99):
        return Boolean99;
      case (100):
        return Boolean100;
      case (101):
        return Boolean101;
      case (102):
        return Boolean102;
      case (103):
        return Boolean103;
      case (104):
        return Boolean104;
      case (105):
        return Boolean105;
      case (106):
        return Boolean106;
      case (107):
        return Boolean107;
      case (108):
        return Boolean108;
      case (109):
        return Boolean109;
      case (110):
        return Boolean110;
      case (111):
        return Boolean111;
      case (112):
        return Boolean112;
      case (113):
        return Boolean113;
      case (114):
        return Boolean114;
      case (115):
        return Boolean115;
      case (116):
        return Boolean116;
      case (117):
        return Boolean117;
      case (118):
        return Boolean118;
      case (119):
        return Boolean119;
      case (120):
        return Boolean120;
      case (121):
        return Boolean121;
      case (122):
        return Boolean122;
      case (123):
        return Boolean123;
      case (124):
        return Boolean124;
      case (125):
        return Boolean125;
      case (126):
        return Boolean126;
      case (127):
        return Boolean127;
      case (128):
        return Boolean128;
      case (129):
        return Boolean129;
      case (130):
        return Boolean130;
      case (131):
        return Boolean131;
      case (132):
        return Boolean132;
      case (133):
        return Boolean133;
      case (134):
        return Boolean134;
      case (135):
        return Boolean135;
      case (136):
        return Boolean136;
      case (137):
        return Boolean137;
      case (138):
        return Boolean138;
      case (139):
        return Boolean139;
      case (140):
        return Boolean140;
      case (141):
        return Boolean141;
      case (142):
        return Boolean142;
      case (143):
        return Boolean143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, Boolean value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        Boolean0 = value;
        break;
      case (1):
        Boolean1 = value;
        break;
      case (2):
        Boolean2 = value;
        break;
      case (3):
        Boolean3 = value;
        break;
      case (4):
        Boolean4 = value;
        break;
      case (5):
        Boolean5 = value;
        break;
      case (6):
        Boolean6 = value;
        break;
      case (7):
        Boolean7 = value;
        break;
      case (8):
        Boolean8 = value;
        break;
      case (9):
        Boolean9 = value;
        break;
      case (10):
        Boolean10 = value;
        break;
      case (11):
        Boolean11 = value;
        break;
      case (12):
        Boolean12 = value;
        break;
      case (13):
        Boolean13 = value;
        break;
      case (14):
        Boolean14 = value;
        break;
      case (16):
        Boolean16 = value;
        break;
      case (17):
        Boolean17 = value;
        break;
      case (18):
        Boolean18 = value;
        break;
      case (19):
        Boolean19 = value;
        break;
      case (20):
        Boolean20 = value;
        break;
      case (21):
        Boolean21 = value;
        break;
      case (22):
        Boolean22 = value;
        break;
      case (23):
        Boolean23 = value;
        break;
      case (24):
        Boolean24 = value;
        break;
      case (26):
        Boolean26 = value;
        break;
      case (28):
        Boolean28 = value;
        break;
      case (29):
        Boolean29 = value;
        break;
      case (30):
        Boolean30 = value;
        break;
      case (31):
        Boolean31 = value;
        break;
      case (32):
        Boolean32 = value;
        break;
      case (33):
        Boolean33 = value;
        break;
      case (35):
        Boolean35 = value;
        break;
      case (36):
        Boolean36 = value;
        break;
      case (37):
        Boolean37 = value;
        break;
      case (38):
        Boolean38 = value;
        break;
      case (39):
        Boolean39 = value;
        break;
      case (40):
        Boolean40 = value;
        break;
      case (41):
        Boolean41 = value;
        break;
      case (42):
        Boolean42 = value;
        break;
      case (43):
        Boolean43 = value;
        break;
      case (44):
        Boolean44 = value;
        break;
      case (45):
        Boolean45 = value;
        break;
      case (46):
        Boolean46 = value;
        break;
      case (47):
        Boolean47 = value;
        break;
      case (48):
        Boolean48 = value;
        break;
      case (49):
        Boolean49 = value;
        break;
      case (50):
        Boolean50 = value;
        break;
      case (52):
        Boolean52 = value;
        break;
      case (53):
        Boolean53 = value;
        break;
      case (54):
        Boolean54 = value;
        break;
      case (55):
        Boolean55 = value;
        break;
      case (56):
        Boolean56 = value;
        break;
      case (57):
        Boolean57 = value;
        break;
      case (58):
        Boolean58 = value;
        break;
      case (59):
        Boolean59 = value;
        break;
      case (60):
        Boolean60 = value;
        break;
      case (62):
        Boolean62 = value;
        break;
      case (64):
        Boolean64 = value;
        break;
      case (65):
        Boolean65 = value;
        break;
      case (66):
        Boolean66 = value;
        break;
      case (67):
        Boolean67 = value;
        break;
      case (68):
        Boolean68 = value;
        break;
      case (69):
        Boolean69 = value;
        break;
      case (71):
        Boolean71 = value;
        break;
      case (72):
        Boolean72 = value;
        break;
      case (73):
        Boolean73 = value;
        break;
      case (74):
        Boolean74 = value;
        break;
      case (75):
        Boolean75 = value;
        break;
      case (76):
        Boolean76 = value;
        break;
      case (77):
        Boolean77 = value;
        break;
      case (78):
        Boolean78 = value;
        break;
      case (79):
        Boolean79 = value;
        break;
      case (80):
        Boolean80 = value;
        break;
      case (81):
        Boolean81 = value;
        break;
      case (82):
        Boolean82 = value;
        break;
      case (83):
        Boolean83 = value;
        break;
      case (84):
        Boolean84 = value;
        break;
      case (85):
        Boolean85 = value;
        break;
      case (86):
        Boolean86 = value;
        break;
      case (88):
        Boolean88 = value;
        break;
      case (89):
        Boolean89 = value;
        break;
      case (90):
        Boolean90 = value;
        break;
      case (91):
        Boolean91 = value;
        break;
      case (92):
        Boolean92 = value;
        break;
      case (93):
        Boolean93 = value;
        break;
      case (94):
        Boolean94 = value;
        break;
      case (95):
        Boolean95 = value;
        break;
      case (96):
        Boolean96 = value;
        break;
      case (98):
        Boolean98 = value;
        break;
      case (100):
        Boolean100 = value;
        break;
      case (101):
        Boolean101 = value;
        break;
      case (102):
        Boolean102 = value;
        break;
      case (103):
        Boolean103 = value;
        break;
      case (104):
        Boolean104 = value;
        break;
      case (105):
        Boolean105 = value;
        break;
      case (107):
        Boolean107 = value;
        break;
      case (108):
        Boolean108 = value;
        break;
      case (109):
        Boolean109 = value;
        break;
      case (110):
        Boolean110 = value;
        break;
      case (111):
        Boolean111 = value;
        break;
      case (112):
        Boolean112 = value;
        break;
      case (113):
        Boolean113 = value;
        break;
      case (114):
        Boolean114 = value;
        break;
      case (115):
        Boolean115 = value;
        break;
      case (116):
        Boolean116 = value;
        break;
      case (117):
        Boolean117 = value;
        break;
      case (118):
        Boolean118 = value;
        break;
      case (119):
        Boolean119 = value;
        break;
      case (120):
        Boolean120 = value;
        break;
      case (121):
        Boolean121 = value;
        break;
      case (122):
        Boolean122 = value;
        break;
      case (124):
        Boolean124 = value;
        break;
      case (125):
        Boolean125 = value;
        break;
      case (126):
        Boolean126 = value;
        break;
      case (127):
        Boolean127 = value;
        break;
      case (128):
        Boolean128 = value;
        break;
      case (129):
        Boolean129 = value;
        break;
      case (130):
        Boolean130 = value;
        break;
      case (131):
        Boolean131 = value;
        break;
      case (132):
        Boolean132 = value;
        break;
      case (134):
        Boolean134 = value;
        break;
      case (136):
        Boolean136 = value;
        break;
      case (137):
        Boolean137 = value;
        break;
      case (138):
        Boolean138 = value;
        break;
      case (139):
        Boolean139 = value;
        break;
      case (140):
        Boolean140 = value;
        break;
      case (141):
        Boolean141 = value;
        break;
      case (143):
        Boolean143 = 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);
    }
  }
}
