/*
 * 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 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);
    }
  }
}
