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

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

import java.io.Serializable;
import java.util.Locale;

public class FieldsOfLocale {
  public int identifier;
  private Locale Locale0;
  private Locale Locale1;
  private Locale Locale2;
  private Locale Locale3;
  private Locale Locale4;
  private Locale Locale5;
  private Locale Locale6;
  private Locale Locale7;
  private static Locale Locale8;
  private transient Locale Locale9;
  private transient Locale Locale10;
  private transient Locale Locale11;
  private transient Locale Locale12;
  private transient Locale Locale13;
  private transient Locale Locale14;
  private final Locale Locale15 = Locale.US;
  private volatile Locale Locale16;
  private volatile Locale Locale17;
  private volatile Locale Locale18;
  private volatile Locale Locale19;
  private volatile Locale Locale20;
  private volatile Locale Locale21;
  private volatile Locale Locale22;
  private volatile Locale Locale23;
  private static transient Locale Locale24;
  private static final Locale Locale25 = Locale.US;
  private static volatile Locale Locale26;
  private final transient Locale Locale27 = Locale.US;
  private transient volatile Locale Locale28;
  private transient volatile Locale Locale29;
  private transient volatile Locale Locale30;
  private transient volatile Locale Locale31;
  private transient volatile Locale Locale32;
  private transient volatile Locale Locale33;
  private static final transient Locale Locale34 = Locale.US;
  private static transient volatile Locale Locale35;
  public Locale Locale36;
  public Locale Locale37;
  public Locale Locale38;
  public Locale Locale39;
  public Locale Locale40;
  public Locale Locale41;
  public Locale Locale42;
  public Locale Locale43;
  public static Locale Locale44;
  public transient Locale Locale45;
  public transient Locale Locale46;
  public transient Locale Locale47;
  public transient Locale Locale48;
  public transient Locale Locale49;
  public transient Locale Locale50;
  public final Locale Locale51 = Locale.US;
  public volatile Locale Locale52;
  public volatile Locale Locale53;
  public volatile Locale Locale54;
  public volatile Locale Locale55;
  public volatile Locale Locale56;
  public volatile Locale Locale57;
  public volatile Locale Locale58;
  public volatile Locale Locale59;
  public static transient Locale Locale60;
  public static final Locale Locale61 = Locale.US;
  public static volatile Locale Locale62;
  public final transient Locale Locale63 = Locale.US;
  public transient volatile Locale Locale64;
  public transient volatile Locale Locale65;
  public transient volatile Locale Locale66;
  public transient volatile Locale Locale67;
  public transient volatile Locale Locale68;
  public transient volatile Locale Locale69;
  public static final transient Locale Locale70 = Locale.US;
  public static transient volatile Locale Locale71;
  protected Locale Locale72;
  protected Locale Locale73;
  protected Locale Locale74;
  protected Locale Locale75;
  protected Locale Locale76;
  protected Locale Locale77;
  protected Locale Locale78;
  protected Locale Locale79;
  protected static Locale Locale80;
  protected transient Locale Locale81;
  protected transient Locale Locale82;
  protected transient Locale Locale83;
  protected transient Locale Locale84;
  protected transient Locale Locale85;
  protected transient Locale Locale86;
  protected final Locale Locale87 = Locale.US;
  protected volatile Locale Locale88;
  protected volatile Locale Locale89;
  protected volatile Locale Locale90;
  protected volatile Locale Locale91;
  protected volatile Locale Locale92;
  protected volatile Locale Locale93;
  protected volatile Locale Locale94;
  protected volatile Locale Locale95;
  protected static transient Locale Locale96;
  protected static final Locale Locale97 = Locale.US;
  protected static volatile Locale Locale98;
  protected final transient Locale Locale99 = Locale.US;
  protected transient volatile Locale Locale100;
  protected transient volatile Locale Locale101;
  protected transient volatile Locale Locale102;
  protected transient volatile Locale Locale103;
  protected transient volatile Locale Locale104;
  protected transient volatile Locale Locale105;
  protected static final transient Locale Locale106 = Locale.US;
  protected static transient volatile Locale Locale107;
  Locale Locale108;
  Locale Locale109;
  Locale Locale110;
  Locale Locale111;
  Locale Locale112;
  Locale Locale113;
  Locale Locale114;
  Locale Locale115;
  static Locale Locale116;
  transient Locale Locale117;
  transient Locale Locale118;
  transient Locale Locale119;
  transient Locale Locale120;
  transient Locale Locale121;
  transient Locale Locale122;
  final Locale Locale123 = Locale.US;
  volatile Locale Locale124;
  volatile Locale Locale125;
  volatile Locale Locale126;
  volatile Locale Locale127;
  volatile Locale Locale128;
  volatile Locale Locale129;
  volatile Locale Locale130;
  volatile Locale Locale131;
  static transient Locale Locale132;
  static final Locale Locale133 = Locale.US;
  static volatile Locale Locale134;
  final transient Locale Locale135 = Locale.US;
  transient volatile Locale Locale136;
  transient volatile Locale Locale137;
  transient volatile Locale Locale138;
  transient volatile Locale Locale139;
  transient volatile Locale Locale140;
  transient volatile Locale Locale141;
  static final transient Locale Locale142 = Locale.US;
  static transient volatile Locale Locale143;

  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 Locale Locale0",
    "embedded= true   private Locale Locale1",
    "embedded= false   private Locale Locale2",
    "persistence-modifier= none    private Locale Locale3",
    "persistence-modifier= persistent    private Locale Locale4",
    "persistence-modifier= persistent  embedded= true   private Locale Locale5",
    "persistence-modifier= persistent  embedded= false   private Locale Locale6",
    "persistence-modifier= transactional    private Locale Locale7",
    "private static Locale Locale8",
    "private transient Locale Locale9",
    "persistence-modifier= none    private transient Locale Locale10",
    "persistence-modifier= persistent    private transient Locale Locale11",
    "persistence-modifier= persistent  embedded= true   private transient Locale Locale12",
    "persistence-modifier= persistent  embedded= false   private transient Locale Locale13",
    "persistence-modifier= transactional    private transient Locale Locale14",
    "private final Locale Locale15",
    "private volatile Locale Locale16",
    "embedded= true   private volatile Locale Locale17",
    "embedded= false   private volatile Locale Locale18",
    "persistence-modifier= none    private volatile Locale Locale19",
    "persistence-modifier= persistent    private volatile Locale Locale20",
    "persistence-modifier= persistent  embedded= true   private volatile Locale Locale21",
    "persistence-modifier= persistent  embedded= false   private volatile Locale Locale22",
    "persistence-modifier= transactional    private volatile Locale Locale23",
    "private static transient Locale Locale24",
    "private static final Locale Locale25",
    "private static volatile Locale Locale26",
    "private transient final Locale Locale27",
    "private transient volatile Locale Locale28",
    "persistence-modifier= none    private transient volatile Locale Locale29",
    "persistence-modifier= persistent    private transient volatile Locale Locale30",
    "persistence-modifier= persistent  embedded= true   private transient volatile Locale Locale31",
    "persistence-modifier= persistent  embedded= false   private transient volatile Locale Locale32",
    "persistence-modifier= transactional    private transient volatile Locale Locale33",
    "private static transient final Locale Locale34",
    "private static transient volatile Locale Locale35",
    "public Locale Locale36",
    "embedded= true   public Locale Locale37",
    "embedded= false   public Locale Locale38",
    "persistence-modifier= none    public Locale Locale39",
    "persistence-modifier= persistent    public Locale Locale40",
    "persistence-modifier= persistent  embedded= true   public Locale Locale41",
    "persistence-modifier= persistent  embedded= false   public Locale Locale42",
    "persistence-modifier= transactional    public Locale Locale43",
    "public static Locale Locale44",
    "public transient Locale Locale45",
    "persistence-modifier= none    public transient Locale Locale46",
    "persistence-modifier= persistent    public transient Locale Locale47",
    "persistence-modifier= persistent  embedded= true   public transient Locale Locale48",
    "persistence-modifier= persistent  embedded= false   public transient Locale Locale49",
    "persistence-modifier= transactional    public transient Locale Locale50",
    "public final Locale Locale51",
    "public volatile Locale Locale52",
    "embedded= true   public volatile Locale Locale53",
    "embedded= false   public volatile Locale Locale54",
    "persistence-modifier= none    public volatile Locale Locale55",
    "persistence-modifier= persistent    public volatile Locale Locale56",
    "persistence-modifier= persistent  embedded= true   public volatile Locale Locale57",
    "persistence-modifier= persistent  embedded= false   public volatile Locale Locale58",
    "persistence-modifier= transactional    public volatile Locale Locale59",
    "public static transient Locale Locale60",
    "public static final Locale Locale61",
    "public static volatile Locale Locale62",
    "public transient final Locale Locale63",
    "public transient volatile Locale Locale64",
    "persistence-modifier= none    public transient volatile Locale Locale65",
    "persistence-modifier= persistent    public transient volatile Locale Locale66",
    "persistence-modifier= persistent  embedded= true   public transient volatile Locale Locale67",
    "persistence-modifier= persistent  embedded= false   public transient volatile Locale Locale68",
    "persistence-modifier= transactional    public transient volatile Locale Locale69",
    "public static transient final Locale Locale70",
    "public static transient volatile Locale Locale71",
    "protected Locale Locale72",
    "embedded= true   protected Locale Locale73",
    "embedded= false   protected Locale Locale74",
    "persistence-modifier= none    protected Locale Locale75",
    "persistence-modifier= persistent    protected Locale Locale76",
    "persistence-modifier= persistent  embedded= true   protected Locale Locale77",
    "persistence-modifier= persistent  embedded= false   protected Locale Locale78",
    "persistence-modifier= transactional    protected Locale Locale79",
    "protected static Locale Locale80",
    "protected transient Locale Locale81",
    "persistence-modifier= none    protected transient Locale Locale82",
    "persistence-modifier= persistent    protected transient Locale Locale83",
    "persistence-modifier= persistent  embedded= true   protected transient Locale Locale84",
    "persistence-modifier= persistent  embedded= false   protected transient Locale Locale85",
    "persistence-modifier= transactional    protected transient Locale Locale86",
    "protected final Locale Locale87",
    "protected volatile Locale Locale88",
    "embedded= true   protected volatile Locale Locale89",
    "embedded= false   protected volatile Locale Locale90",
    "persistence-modifier= none    protected volatile Locale Locale91",
    "persistence-modifier= persistent    protected volatile Locale Locale92",
    "persistence-modifier= persistent  embedded= true   protected volatile Locale Locale93",
    "persistence-modifier= persistent  embedded= false   protected volatile Locale Locale94",
    "persistence-modifier= transactional    protected volatile Locale Locale95",
    "protected static transient Locale Locale96",
    "protected static final Locale Locale97",
    "protected static volatile Locale Locale98",
    "protected transient final Locale Locale99",
    "protected transient volatile Locale Locale100",
    "persistence-modifier= none    protected transient volatile Locale Locale101",
    "persistence-modifier= persistent    protected transient volatile Locale Locale102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile Locale Locale103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile Locale Locale104",
    "persistence-modifier= transactional    protected transient volatile Locale Locale105",
    "protected static transient final Locale Locale106",
    "protected static transient volatile Locale Locale107",
    "Locale Locale108",
    "embedded= true   Locale Locale109",
    "embedded= false   Locale Locale110",
    "persistence-modifier= none    Locale Locale111",
    "persistence-modifier= persistent    Locale Locale112",
    "persistence-modifier= persistent  embedded= true   Locale Locale113",
    "persistence-modifier= persistent  embedded= false   Locale Locale114",
    "persistence-modifier= transactional    Locale Locale115",
    "static Locale Locale116",
    "transient Locale Locale117",
    "persistence-modifier= none    transient Locale Locale118",
    "persistence-modifier= persistent    transient Locale Locale119",
    "persistence-modifier= persistent  embedded= true   transient Locale Locale120",
    "persistence-modifier= persistent  embedded= false   transient Locale Locale121",
    "persistence-modifier= transactional    transient Locale Locale122",
    "final Locale Locale123",
    "volatile Locale Locale124",
    "embedded= true   volatile Locale Locale125",
    "embedded= false   volatile Locale Locale126",
    "persistence-modifier= none    volatile Locale Locale127",
    "persistence-modifier= persistent    volatile Locale Locale128",
    "persistence-modifier= persistent  embedded= true   volatile Locale Locale129",
    "persistence-modifier= persistent  embedded= false   volatile Locale Locale130",
    "persistence-modifier= transactional    volatile Locale Locale131",
    "static transient Locale Locale132",
    "static final Locale Locale133",
    "static volatile Locale Locale134",
    "transient final Locale Locale135",
    "transient volatile Locale Locale136",
    "persistence-modifier= none    transient volatile Locale Locale137",
    "persistence-modifier= persistent    transient volatile Locale Locale138",
    "persistence-modifier= persistent  embedded= true   transient volatile Locale Locale139",
    "persistence-modifier= persistent  embedded= false   transient volatile Locale Locale140",
    "persistence-modifier= transactional    transient volatile Locale Locale141",
    "static transient final Locale Locale142",
    "static transient volatile Locale Locale143"
  };

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

  public Locale get(int index) {
    switch (index) {
      case (0):
        return Locale0;
      case (1):
        return Locale1;
      case (2):
        return Locale2;
      case (3):
        return Locale3;
      case (4):
        return Locale4;
      case (5):
        return Locale5;
      case (6):
        return Locale6;
      case (7):
        return Locale7;
      case (8):
        return Locale8;
      case (9):
        return Locale9;
      case (10):
        return Locale10;
      case (11):
        return Locale11;
      case (12):
        return Locale12;
      case (13):
        return Locale13;
      case (14):
        return Locale14;
      case (15):
        return Locale15;
      case (16):
        return Locale16;
      case (17):
        return Locale17;
      case (18):
        return Locale18;
      case (19):
        return Locale19;
      case (20):
        return Locale20;
      case (21):
        return Locale21;
      case (22):
        return Locale22;
      case (23):
        return Locale23;
      case (24):
        return Locale24;
      case (25):
        return Locale25;
      case (26):
        return Locale26;
      case (27):
        return Locale27;
      case (28):
        return Locale28;
      case (29):
        return Locale29;
      case (30):
        return Locale30;
      case (31):
        return Locale31;
      case (32):
        return Locale32;
      case (33):
        return Locale33;
      case (34):
        return Locale34;
      case (35):
        return Locale35;
      case (36):
        return Locale36;
      case (37):
        return Locale37;
      case (38):
        return Locale38;
      case (39):
        return Locale39;
      case (40):
        return Locale40;
      case (41):
        return Locale41;
      case (42):
        return Locale42;
      case (43):
        return Locale43;
      case (44):
        return Locale44;
      case (45):
        return Locale45;
      case (46):
        return Locale46;
      case (47):
        return Locale47;
      case (48):
        return Locale48;
      case (49):
        return Locale49;
      case (50):
        return Locale50;
      case (51):
        return Locale51;
      case (52):
        return Locale52;
      case (53):
        return Locale53;
      case (54):
        return Locale54;
      case (55):
        return Locale55;
      case (56):
        return Locale56;
      case (57):
        return Locale57;
      case (58):
        return Locale58;
      case (59):
        return Locale59;
      case (60):
        return Locale60;
      case (61):
        return Locale61;
      case (62):
        return Locale62;
      case (63):
        return Locale63;
      case (64):
        return Locale64;
      case (65):
        return Locale65;
      case (66):
        return Locale66;
      case (67):
        return Locale67;
      case (68):
        return Locale68;
      case (69):
        return Locale69;
      case (70):
        return Locale70;
      case (71):
        return Locale71;
      case (72):
        return Locale72;
      case (73):
        return Locale73;
      case (74):
        return Locale74;
      case (75):
        return Locale75;
      case (76):
        return Locale76;
      case (77):
        return Locale77;
      case (78):
        return Locale78;
      case (79):
        return Locale79;
      case (80):
        return Locale80;
      case (81):
        return Locale81;
      case (82):
        return Locale82;
      case (83):
        return Locale83;
      case (84):
        return Locale84;
      case (85):
        return Locale85;
      case (86):
        return Locale86;
      case (87):
        return Locale87;
      case (88):
        return Locale88;
      case (89):
        return Locale89;
      case (90):
        return Locale90;
      case (91):
        return Locale91;
      case (92):
        return Locale92;
      case (93):
        return Locale93;
      case (94):
        return Locale94;
      case (95):
        return Locale95;
      case (96):
        return Locale96;
      case (97):
        return Locale97;
      case (98):
        return Locale98;
      case (99):
        return Locale99;
      case (100):
        return Locale100;
      case (101):
        return Locale101;
      case (102):
        return Locale102;
      case (103):
        return Locale103;
      case (104):
        return Locale104;
      case (105):
        return Locale105;
      case (106):
        return Locale106;
      case (107):
        return Locale107;
      case (108):
        return Locale108;
      case (109):
        return Locale109;
      case (110):
        return Locale110;
      case (111):
        return Locale111;
      case (112):
        return Locale112;
      case (113):
        return Locale113;
      case (114):
        return Locale114;
      case (115):
        return Locale115;
      case (116):
        return Locale116;
      case (117):
        return Locale117;
      case (118):
        return Locale118;
      case (119):
        return Locale119;
      case (120):
        return Locale120;
      case (121):
        return Locale121;
      case (122):
        return Locale122;
      case (123):
        return Locale123;
      case (124):
        return Locale124;
      case (125):
        return Locale125;
      case (126):
        return Locale126;
      case (127):
        return Locale127;
      case (128):
        return Locale128;
      case (129):
        return Locale129;
      case (130):
        return Locale130;
      case (131):
        return Locale131;
      case (132):
        return Locale132;
      case (133):
        return Locale133;
      case (134):
        return Locale134;
      case (135):
        return Locale135;
      case (136):
        return Locale136;
      case (137):
        return Locale137;
      case (138):
        return Locale138;
      case (139):
        return Locale139;
      case (140):
        return Locale140;
      case (141):
        return Locale141;
      case (142):
        return Locale142;
      case (143):
        return Locale143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, Locale value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        Locale0 = value;
        break;
      case (1):
        Locale1 = value;
        break;
      case (2):
        Locale2 = value;
        break;
      case (3):
        Locale3 = value;
        break;
      case (4):
        Locale4 = value;
        break;
      case (5):
        Locale5 = value;
        break;
      case (6):
        Locale6 = value;
        break;
      case (7):
        Locale7 = value;
        break;
      case (8):
        Locale8 = value;
        break;
      case (9):
        Locale9 = value;
        break;
      case (10):
        Locale10 = value;
        break;
      case (11):
        Locale11 = value;
        break;
      case (12):
        Locale12 = value;
        break;
      case (13):
        Locale13 = value;
        break;
      case (14):
        Locale14 = value;
        break;
      case (16):
        Locale16 = value;
        break;
      case (17):
        Locale17 = value;
        break;
      case (18):
        Locale18 = value;
        break;
      case (19):
        Locale19 = value;
        break;
      case (20):
        Locale20 = value;
        break;
      case (21):
        Locale21 = value;
        break;
      case (22):
        Locale22 = value;
        break;
      case (23):
        Locale23 = value;
        break;
      case (24):
        Locale24 = value;
        break;
      case (26):
        Locale26 = value;
        break;
      case (28):
        Locale28 = value;
        break;
      case (29):
        Locale29 = value;
        break;
      case (30):
        Locale30 = value;
        break;
      case (31):
        Locale31 = value;
        break;
      case (32):
        Locale32 = value;
        break;
      case (33):
        Locale33 = value;
        break;
      case (35):
        Locale35 = value;
        break;
      case (36):
        Locale36 = value;
        break;
      case (37):
        Locale37 = value;
        break;
      case (38):
        Locale38 = value;
        break;
      case (39):
        Locale39 = value;
        break;
      case (40):
        Locale40 = value;
        break;
      case (41):
        Locale41 = value;
        break;
      case (42):
        Locale42 = value;
        break;
      case (43):
        Locale43 = value;
        break;
      case (44):
        Locale44 = value;
        break;
      case (45):
        Locale45 = value;
        break;
      case (46):
        Locale46 = value;
        break;
      case (47):
        Locale47 = value;
        break;
      case (48):
        Locale48 = value;
        break;
      case (49):
        Locale49 = value;
        break;
      case (50):
        Locale50 = value;
        break;
      case (52):
        Locale52 = value;
        break;
      case (53):
        Locale53 = value;
        break;
      case (54):
        Locale54 = value;
        break;
      case (55):
        Locale55 = value;
        break;
      case (56):
        Locale56 = value;
        break;
      case (57):
        Locale57 = value;
        break;
      case (58):
        Locale58 = value;
        break;
      case (59):
        Locale59 = value;
        break;
      case (60):
        Locale60 = value;
        break;
      case (62):
        Locale62 = value;
        break;
      case (64):
        Locale64 = value;
        break;
      case (65):
        Locale65 = value;
        break;
      case (66):
        Locale66 = value;
        break;
      case (67):
        Locale67 = value;
        break;
      case (68):
        Locale68 = value;
        break;
      case (69):
        Locale69 = value;
        break;
      case (71):
        Locale71 = value;
        break;
      case (72):
        Locale72 = value;
        break;
      case (73):
        Locale73 = value;
        break;
      case (74):
        Locale74 = value;
        break;
      case (75):
        Locale75 = value;
        break;
      case (76):
        Locale76 = value;
        break;
      case (77):
        Locale77 = value;
        break;
      case (78):
        Locale78 = value;
        break;
      case (79):
        Locale79 = value;
        break;
      case (80):
        Locale80 = value;
        break;
      case (81):
        Locale81 = value;
        break;
      case (82):
        Locale82 = value;
        break;
      case (83):
        Locale83 = value;
        break;
      case (84):
        Locale84 = value;
        break;
      case (85):
        Locale85 = value;
        break;
      case (86):
        Locale86 = value;
        break;
      case (88):
        Locale88 = value;
        break;
      case (89):
        Locale89 = value;
        break;
      case (90):
        Locale90 = value;
        break;
      case (91):
        Locale91 = value;
        break;
      case (92):
        Locale92 = value;
        break;
      case (93):
        Locale93 = value;
        break;
      case (94):
        Locale94 = value;
        break;
      case (95):
        Locale95 = value;
        break;
      case (96):
        Locale96 = value;
        break;
      case (98):
        Locale98 = value;
        break;
      case (100):
        Locale100 = value;
        break;
      case (101):
        Locale101 = value;
        break;
      case (102):
        Locale102 = value;
        break;
      case (103):
        Locale103 = value;
        break;
      case (104):
        Locale104 = value;
        break;
      case (105):
        Locale105 = value;
        break;
      case (107):
        Locale107 = value;
        break;
      case (108):
        Locale108 = value;
        break;
      case (109):
        Locale109 = value;
        break;
      case (110):
        Locale110 = value;
        break;
      case (111):
        Locale111 = value;
        break;
      case (112):
        Locale112 = value;
        break;
      case (113):
        Locale113 = value;
        break;
      case (114):
        Locale114 = value;
        break;
      case (115):
        Locale115 = value;
        break;
      case (116):
        Locale116 = value;
        break;
      case (117):
        Locale117 = value;
        break;
      case (118):
        Locale118 = value;
        break;
      case (119):
        Locale119 = value;
        break;
      case (120):
        Locale120 = value;
        break;
      case (121):
        Locale121 = value;
        break;
      case (122):
        Locale122 = value;
        break;
      case (124):
        Locale124 = value;
        break;
      case (125):
        Locale125 = value;
        break;
      case (126):
        Locale126 = value;
        break;
      case (127):
        Locale127 = value;
        break;
      case (128):
        Locale128 = value;
        break;
      case (129):
        Locale129 = value;
        break;
      case (130):
        Locale130 = value;
        break;
      case (131):
        Locale131 = value;
        break;
      case (132):
        Locale132 = value;
        break;
      case (134):
        Locale134 = value;
        break;
      case (136):
        Locale136 = value;
        break;
      case (137):
        Locale137 = value;
        break;
      case (138):
        Locale138 = value;
        break;
      case (139):
        Locale139 = value;
        break;
      case (140):
        Locale140 = value;
        break;
      case (141):
        Locale141 = value;
        break;
      case (143):
        Locale143 = 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);
    }
  }
}
