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

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

import java.io.Serializable;

public class FieldsOfString {
  public int identifier;
  private String String0;
  private String String1;
  private String String2;
  private String String3;
  private String String4;
  private String String5;
  private String String6;
  private String String7;
  private static String String8;
  private transient String String9;
  private transient String String10;
  private transient String String11;
  private transient String String12;
  private transient String String13;
  private transient String String14;
  private final String String15 = "JDO TCK";
  private volatile String String16;
  private volatile String String17;
  private volatile String String18;
  private volatile String String19;
  private volatile String String20;
  private volatile String String21;
  private volatile String String22;
  private volatile String String23;
  private static transient String String24;
  private static final String String25 = "JDO TCK";
  private static volatile String String26;
  private final transient String String27 = "JDO TCK";
  private transient volatile String String28;
  private transient volatile String String29;
  private transient volatile String String30;
  private transient volatile String String31;
  private transient volatile String String32;
  private transient volatile String String33;
  private static final transient String String34 = "JDO TCK";
  private static transient volatile String String35;
  public String String36;
  public String String37;
  public String String38;
  public String String39;
  public String String40;
  public String String41;
  public String String42;
  public String String43;
  public static String String44;
  public transient String String45;
  public transient String String46;
  public transient String String47;
  public transient String String48;
  public transient String String49;
  public transient String String50;
  public final String String51 = "JDO TCK";
  public volatile String String52;
  public volatile String String53;
  public volatile String String54;
  public volatile String String55;
  public volatile String String56;
  public volatile String String57;
  public volatile String String58;
  public volatile String String59;
  public static transient String String60;
  public static final String String61 = "JDO TCK";
  public static volatile String String62;
  public final transient String String63 = "JDO TCK";
  public transient volatile String String64;
  public transient volatile String String65;
  public transient volatile String String66;
  public transient volatile String String67;
  public transient volatile String String68;
  public transient volatile String String69;
  public static final transient String String70 = "JDO TCK";
  public static transient volatile String String71;
  protected String String72;
  protected String String73;
  protected String String74;
  protected String String75;
  protected String String76;
  protected String String77;
  protected String String78;
  protected String String79;
  protected static String String80;
  protected transient String String81;
  protected transient String String82;
  protected transient String String83;
  protected transient String String84;
  protected transient String String85;
  protected transient String String86;
  protected final String String87 = "JDO TCK";
  protected volatile String String88;
  protected volatile String String89;
  protected volatile String String90;
  protected volatile String String91;
  protected volatile String String92;
  protected volatile String String93;
  protected volatile String String94;
  protected volatile String String95;
  protected static transient String String96;
  protected static final String String97 = "JDO TCK";
  protected static volatile String String98;
  protected final transient String String99 = "JDO TCK";
  protected transient volatile String String100;
  protected transient volatile String String101;
  protected transient volatile String String102;
  protected transient volatile String String103;
  protected transient volatile String String104;
  protected transient volatile String String105;
  protected static final transient String String106 = "JDO TCK";
  protected static transient volatile String String107;
  String String108;
  String String109;
  String String110;
  String String111;
  String String112;
  String String113;
  String String114;
  String String115;
  static String String116;
  transient String String117;
  transient String String118;
  transient String String119;
  transient String String120;
  transient String String121;
  transient String String122;
  final String String123 = "JDO TCK";
  volatile String String124;
  volatile String String125;
  volatile String String126;
  volatile String String127;
  volatile String String128;
  volatile String String129;
  volatile String String130;
  volatile String String131;
  static transient String String132;
  static final String String133 = "JDO TCK";
  static volatile String String134;
  final transient String String135 = "JDO TCK";
  transient volatile String String136;
  transient volatile String String137;
  transient volatile String String138;
  transient volatile String String139;
  transient volatile String String140;
  transient volatile String String141;
  static final transient String String142 = "JDO TCK";
  static transient volatile String String143;

  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 String String0",
    "embedded= true   private String String1",
    "embedded= false   private String String2",
    "persistence-modifier= none    private String String3",
    "persistence-modifier= persistent    private String String4",
    "persistence-modifier= persistent  embedded= true   private String String5",
    "persistence-modifier= persistent  embedded= false   private String String6",
    "persistence-modifier= transactional    private String String7",
    "private static String String8",
    "private transient String String9",
    "persistence-modifier= none    private transient String String10",
    "persistence-modifier= persistent    private transient String String11",
    "persistence-modifier= persistent  embedded= true   private transient String String12",
    "persistence-modifier= persistent  embedded= false   private transient String String13",
    "persistence-modifier= transactional    private transient String String14",
    "private final String String15",
    "private volatile String String16",
    "embedded= true   private volatile String String17",
    "embedded= false   private volatile String String18",
    "persistence-modifier= none    private volatile String String19",
    "persistence-modifier= persistent    private volatile String String20",
    "persistence-modifier= persistent  embedded= true   private volatile String String21",
    "persistence-modifier= persistent  embedded= false   private volatile String String22",
    "persistence-modifier= transactional    private volatile String String23",
    "private static transient String String24",
    "private static final String String25",
    "private static volatile String String26",
    "private transient final String String27",
    "private transient volatile String String28",
    "persistence-modifier= none    private transient volatile String String29",
    "persistence-modifier= persistent    private transient volatile String String30",
    "persistence-modifier= persistent  embedded= true   private transient volatile String String31",
    "persistence-modifier= persistent  embedded= false   private transient volatile String String32",
    "persistence-modifier= transactional    private transient volatile String String33",
    "private static transient final String String34",
    "private static transient volatile String String35",
    "public String String36",
    "embedded= true   public String String37",
    "embedded= false   public String String38",
    "persistence-modifier= none    public String String39",
    "persistence-modifier= persistent    public String String40",
    "persistence-modifier= persistent  embedded= true   public String String41",
    "persistence-modifier= persistent  embedded= false   public String String42",
    "persistence-modifier= transactional    public String String43",
    "public static String String44",
    "public transient String String45",
    "persistence-modifier= none    public transient String String46",
    "persistence-modifier= persistent    public transient String String47",
    "persistence-modifier= persistent  embedded= true   public transient String String48",
    "persistence-modifier= persistent  embedded= false   public transient String String49",
    "persistence-modifier= transactional    public transient String String50",
    "public final String String51",
    "public volatile String String52",
    "embedded= true   public volatile String String53",
    "embedded= false   public volatile String String54",
    "persistence-modifier= none    public volatile String String55",
    "persistence-modifier= persistent    public volatile String String56",
    "persistence-modifier= persistent  embedded= true   public volatile String String57",
    "persistence-modifier= persistent  embedded= false   public volatile String String58",
    "persistence-modifier= transactional    public volatile String String59",
    "public static transient String String60",
    "public static final String String61",
    "public static volatile String String62",
    "public transient final String String63",
    "public transient volatile String String64",
    "persistence-modifier= none    public transient volatile String String65",
    "persistence-modifier= persistent    public transient volatile String String66",
    "persistence-modifier= persistent  embedded= true   public transient volatile String String67",
    "persistence-modifier= persistent  embedded= false   public transient volatile String String68",
    "persistence-modifier= transactional    public transient volatile String String69",
    "public static transient final String String70",
    "public static transient volatile String String71",
    "protected String String72",
    "embedded= true   protected String String73",
    "embedded= false   protected String String74",
    "persistence-modifier= none    protected String String75",
    "persistence-modifier= persistent    protected String String76",
    "persistence-modifier= persistent  embedded= true   protected String String77",
    "persistence-modifier= persistent  embedded= false   protected String String78",
    "persistence-modifier= transactional    protected String String79",
    "protected static String String80",
    "protected transient String String81",
    "persistence-modifier= none    protected transient String String82",
    "persistence-modifier= persistent    protected transient String String83",
    "persistence-modifier= persistent  embedded= true   protected transient String String84",
    "persistence-modifier= persistent  embedded= false   protected transient String String85",
    "persistence-modifier= transactional    protected transient String String86",
    "protected final String String87",
    "protected volatile String String88",
    "embedded= true   protected volatile String String89",
    "embedded= false   protected volatile String String90",
    "persistence-modifier= none    protected volatile String String91",
    "persistence-modifier= persistent    protected volatile String String92",
    "persistence-modifier= persistent  embedded= true   protected volatile String String93",
    "persistence-modifier= persistent  embedded= false   protected volatile String String94",
    "persistence-modifier= transactional    protected volatile String String95",
    "protected static transient String String96",
    "protected static final String String97",
    "protected static volatile String String98",
    "protected transient final String String99",
    "protected transient volatile String String100",
    "persistence-modifier= none    protected transient volatile String String101",
    "persistence-modifier= persistent    protected transient volatile String String102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile String String103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile String String104",
    "persistence-modifier= transactional    protected transient volatile String String105",
    "protected static transient final String String106",
    "protected static transient volatile String String107",
    "String String108",
    "embedded= true   String String109",
    "embedded= false   String String110",
    "persistence-modifier= none    String String111",
    "persistence-modifier= persistent    String String112",
    "persistence-modifier= persistent  embedded= true   String String113",
    "persistence-modifier= persistent  embedded= false   String String114",
    "persistence-modifier= transactional    String String115",
    "static String String116",
    "transient String String117",
    "persistence-modifier= none    transient String String118",
    "persistence-modifier= persistent    transient String String119",
    "persistence-modifier= persistent  embedded= true   transient String String120",
    "persistence-modifier= persistent  embedded= false   transient String String121",
    "persistence-modifier= transactional    transient String String122",
    "final String String123",
    "volatile String String124",
    "embedded= true   volatile String String125",
    "embedded= false   volatile String String126",
    "persistence-modifier= none    volatile String String127",
    "persistence-modifier= persistent    volatile String String128",
    "persistence-modifier= persistent  embedded= true   volatile String String129",
    "persistence-modifier= persistent  embedded= false   volatile String String130",
    "persistence-modifier= transactional    volatile String String131",
    "static transient String String132",
    "static final String String133",
    "static volatile String String134",
    "transient final String String135",
    "transient volatile String String136",
    "persistence-modifier= none    transient volatile String String137",
    "persistence-modifier= persistent    transient volatile String String138",
    "persistence-modifier= persistent  embedded= true   transient volatile String String139",
    "persistence-modifier= persistent  embedded= false   transient volatile String String140",
    "persistence-modifier= transactional    transient volatile String String141",
    "static transient final String String142",
    "static transient volatile String String143"
  };

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

  public String get(int index) {
    switch (index) {
      case (0):
        return String0;
      case (1):
        return String1;
      case (2):
        return String2;
      case (3):
        return String3;
      case (4):
        return String4;
      case (5):
        return String5;
      case (6):
        return String6;
      case (7):
        return String7;
      case (8):
        return String8;
      case (9):
        return String9;
      case (10):
        return String10;
      case (11):
        return String11;
      case (12):
        return String12;
      case (13):
        return String13;
      case (14):
        return String14;
      case (15):
        return String15;
      case (16):
        return String16;
      case (17):
        return String17;
      case (18):
        return String18;
      case (19):
        return String19;
      case (20):
        return String20;
      case (21):
        return String21;
      case (22):
        return String22;
      case (23):
        return String23;
      case (24):
        return String24;
      case (25):
        return String25;
      case (26):
        return String26;
      case (27):
        return String27;
      case (28):
        return String28;
      case (29):
        return String29;
      case (30):
        return String30;
      case (31):
        return String31;
      case (32):
        return String32;
      case (33):
        return String33;
      case (34):
        return String34;
      case (35):
        return String35;
      case (36):
        return String36;
      case (37):
        return String37;
      case (38):
        return String38;
      case (39):
        return String39;
      case (40):
        return String40;
      case (41):
        return String41;
      case (42):
        return String42;
      case (43):
        return String43;
      case (44):
        return String44;
      case (45):
        return String45;
      case (46):
        return String46;
      case (47):
        return String47;
      case (48):
        return String48;
      case (49):
        return String49;
      case (50):
        return String50;
      case (51):
        return String51;
      case (52):
        return String52;
      case (53):
        return String53;
      case (54):
        return String54;
      case (55):
        return String55;
      case (56):
        return String56;
      case (57):
        return String57;
      case (58):
        return String58;
      case (59):
        return String59;
      case (60):
        return String60;
      case (61):
        return String61;
      case (62):
        return String62;
      case (63):
        return String63;
      case (64):
        return String64;
      case (65):
        return String65;
      case (66):
        return String66;
      case (67):
        return String67;
      case (68):
        return String68;
      case (69):
        return String69;
      case (70):
        return String70;
      case (71):
        return String71;
      case (72):
        return String72;
      case (73):
        return String73;
      case (74):
        return String74;
      case (75):
        return String75;
      case (76):
        return String76;
      case (77):
        return String77;
      case (78):
        return String78;
      case (79):
        return String79;
      case (80):
        return String80;
      case (81):
        return String81;
      case (82):
        return String82;
      case (83):
        return String83;
      case (84):
        return String84;
      case (85):
        return String85;
      case (86):
        return String86;
      case (87):
        return String87;
      case (88):
        return String88;
      case (89):
        return String89;
      case (90):
        return String90;
      case (91):
        return String91;
      case (92):
        return String92;
      case (93):
        return String93;
      case (94):
        return String94;
      case (95):
        return String95;
      case (96):
        return String96;
      case (97):
        return String97;
      case (98):
        return String98;
      case (99):
        return String99;
      case (100):
        return String100;
      case (101):
        return String101;
      case (102):
        return String102;
      case (103):
        return String103;
      case (104):
        return String104;
      case (105):
        return String105;
      case (106):
        return String106;
      case (107):
        return String107;
      case (108):
        return String108;
      case (109):
        return String109;
      case (110):
        return String110;
      case (111):
        return String111;
      case (112):
        return String112;
      case (113):
        return String113;
      case (114):
        return String114;
      case (115):
        return String115;
      case (116):
        return String116;
      case (117):
        return String117;
      case (118):
        return String118;
      case (119):
        return String119;
      case (120):
        return String120;
      case (121):
        return String121;
      case (122):
        return String122;
      case (123):
        return String123;
      case (124):
        return String124;
      case (125):
        return String125;
      case (126):
        return String126;
      case (127):
        return String127;
      case (128):
        return String128;
      case (129):
        return String129;
      case (130):
        return String130;
      case (131):
        return String131;
      case (132):
        return String132;
      case (133):
        return String133;
      case (134):
        return String134;
      case (135):
        return String135;
      case (136):
        return String136;
      case (137):
        return String137;
      case (138):
        return String138;
      case (139):
        return String139;
      case (140):
        return String140;
      case (141):
        return String141;
      case (142):
        return String142;
      case (143):
        return String143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, String value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        String0 = value;
        break;
      case (1):
        String1 = value;
        break;
      case (2):
        String2 = value;
        break;
      case (3):
        String3 = value;
        break;
      case (4):
        String4 = value;
        break;
      case (5):
        String5 = value;
        break;
      case (6):
        String6 = value;
        break;
      case (7):
        String7 = value;
        break;
      case (8):
        String8 = value;
        break;
      case (9):
        String9 = value;
        break;
      case (10):
        String10 = value;
        break;
      case (11):
        String11 = value;
        break;
      case (12):
        String12 = value;
        break;
      case (13):
        String13 = value;
        break;
      case (14):
        String14 = value;
        break;
      case (16):
        String16 = value;
        break;
      case (17):
        String17 = value;
        break;
      case (18):
        String18 = value;
        break;
      case (19):
        String19 = value;
        break;
      case (20):
        String20 = value;
        break;
      case (21):
        String21 = value;
        break;
      case (22):
        String22 = value;
        break;
      case (23):
        String23 = value;
        break;
      case (24):
        String24 = value;
        break;
      case (26):
        String26 = value;
        break;
      case (28):
        String28 = value;
        break;
      case (29):
        String29 = value;
        break;
      case (30):
        String30 = value;
        break;
      case (31):
        String31 = value;
        break;
      case (32):
        String32 = value;
        break;
      case (33):
        String33 = value;
        break;
      case (35):
        String35 = value;
        break;
      case (36):
        String36 = value;
        break;
      case (37):
        String37 = value;
        break;
      case (38):
        String38 = value;
        break;
      case (39):
        String39 = value;
        break;
      case (40):
        String40 = value;
        break;
      case (41):
        String41 = value;
        break;
      case (42):
        String42 = value;
        break;
      case (43):
        String43 = value;
        break;
      case (44):
        String44 = value;
        break;
      case (45):
        String45 = value;
        break;
      case (46):
        String46 = value;
        break;
      case (47):
        String47 = value;
        break;
      case (48):
        String48 = value;
        break;
      case (49):
        String49 = value;
        break;
      case (50):
        String50 = value;
        break;
      case (52):
        String52 = value;
        break;
      case (53):
        String53 = value;
        break;
      case (54):
        String54 = value;
        break;
      case (55):
        String55 = value;
        break;
      case (56):
        String56 = value;
        break;
      case (57):
        String57 = value;
        break;
      case (58):
        String58 = value;
        break;
      case (59):
        String59 = value;
        break;
      case (60):
        String60 = value;
        break;
      case (62):
        String62 = value;
        break;
      case (64):
        String64 = value;
        break;
      case (65):
        String65 = value;
        break;
      case (66):
        String66 = value;
        break;
      case (67):
        String67 = value;
        break;
      case (68):
        String68 = value;
        break;
      case (69):
        String69 = value;
        break;
      case (71):
        String71 = value;
        break;
      case (72):
        String72 = value;
        break;
      case (73):
        String73 = value;
        break;
      case (74):
        String74 = value;
        break;
      case (75):
        String75 = value;
        break;
      case (76):
        String76 = value;
        break;
      case (77):
        String77 = value;
        break;
      case (78):
        String78 = value;
        break;
      case (79):
        String79 = value;
        break;
      case (80):
        String80 = value;
        break;
      case (81):
        String81 = value;
        break;
      case (82):
        String82 = value;
        break;
      case (83):
        String83 = value;
        break;
      case (84):
        String84 = value;
        break;
      case (85):
        String85 = value;
        break;
      case (86):
        String86 = value;
        break;
      case (88):
        String88 = value;
        break;
      case (89):
        String89 = value;
        break;
      case (90):
        String90 = value;
        break;
      case (91):
        String91 = value;
        break;
      case (92):
        String92 = value;
        break;
      case (93):
        String93 = value;
        break;
      case (94):
        String94 = value;
        break;
      case (95):
        String95 = value;
        break;
      case (96):
        String96 = value;
        break;
      case (98):
        String98 = value;
        break;
      case (100):
        String100 = value;
        break;
      case (101):
        String101 = value;
        break;
      case (102):
        String102 = value;
        break;
      case (103):
        String103 = value;
        break;
      case (104):
        String104 = value;
        break;
      case (105):
        String105 = value;
        break;
      case (107):
        String107 = value;
        break;
      case (108):
        String108 = value;
        break;
      case (109):
        String109 = value;
        break;
      case (110):
        String110 = value;
        break;
      case (111):
        String111 = value;
        break;
      case (112):
        String112 = value;
        break;
      case (113):
        String113 = value;
        break;
      case (114):
        String114 = value;
        break;
      case (115):
        String115 = value;
        break;
      case (116):
        String116 = value;
        break;
      case (117):
        String117 = value;
        break;
      case (118):
        String118 = value;
        break;
      case (119):
        String119 = value;
        break;
      case (120):
        String120 = value;
        break;
      case (121):
        String121 = value;
        break;
      case (122):
        String122 = value;
        break;
      case (124):
        String124 = value;
        break;
      case (125):
        String125 = value;
        break;
      case (126):
        String126 = value;
        break;
      case (127):
        String127 = value;
        break;
      case (128):
        String128 = value;
        break;
      case (129):
        String129 = value;
        break;
      case (130):
        String130 = value;
        break;
      case (131):
        String131 = value;
        break;
      case (132):
        String132 = value;
        break;
      case (134):
        String134 = value;
        break;
      case (136):
        String136 = value;
        break;
      case (137):
        String137 = value;
        break;
      case (138):
        String138 = value;
        break;
      case (139):
        String139 = value;
        break;
      case (140):
        String140 = value;
        break;
      case (141):
        String141 = value;
        break;
      case (143):
        String143 = 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);
    }
  }
}
