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

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

import java.io.Serializable;

public class 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);
    }
  }
}
