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