/*
 * 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 FieldsOfPrimitiveint {
  public int identifier;
  private int int0;
  private int int1;
  private int int2;
  private int int3;
  private int int4;
  private int int5;
  private int int6;
  private int int7;
  private static int int8;
  private transient int int9;
  private transient int int10;
  private transient int int11;
  private transient int int12;
  private transient int int13;
  private transient int int14;
  private final int int15 = 5;
  private volatile int int16;
  private volatile int int17;
  private volatile int int18;
  private volatile int int19;
  private volatile int int20;
  private volatile int int21;
  private volatile int int22;
  private volatile int int23;
  private static transient int int24;
  private static final int int25 = 5;
  private static volatile int int26;
  private final transient int int27 = 5;
  private transient volatile int int28;
  private transient volatile int int29;
  private transient volatile int int30;
  private transient volatile int int31;
  private transient volatile int int32;
  private transient volatile int int33;
  private static final transient int int34 = 5;
  private static transient volatile int int35;
  public int int36;
  public int int37;
  public int int38;
  public int int39;
  public int int40;
  public int int41;
  public int int42;
  public int int43;
  public static int int44;
  public transient int int45;
  public transient int int46;
  public transient int int47;
  public transient int int48;
  public transient int int49;
  public transient int int50;
  public final int int51 = 5;
  public volatile int int52;
  public volatile int int53;
  public volatile int int54;
  public volatile int int55;
  public volatile int int56;
  public volatile int int57;
  public volatile int int58;
  public volatile int int59;
  public static transient int int60;
  public static final int int61 = 5;
  public static volatile int int62;
  public final transient int int63 = 5;
  public transient volatile int int64;
  public transient volatile int int65;
  public transient volatile int int66;
  public transient volatile int int67;
  public transient volatile int int68;
  public transient volatile int int69;
  public static final transient int int70 = 5;
  public static transient volatile int int71;
  protected int int72;
  protected int int73;
  protected int int74;
  protected int int75;
  protected int int76;
  protected int int77;
  protected int int78;
  protected int int79;
  protected static int int80;
  protected transient int int81;
  protected transient int int82;
  protected transient int int83;
  protected transient int int84;
  protected transient int int85;
  protected transient int int86;
  protected final int int87 = 5;
  protected volatile int int88;
  protected volatile int int89;
  protected volatile int int90;
  protected volatile int int91;
  protected volatile int int92;
  protected volatile int int93;
  protected volatile int int94;
  protected volatile int int95;
  protected static transient int int96;
  protected static final int int97 = 5;
  protected static volatile int int98;
  protected final transient int int99 = 5;
  protected transient volatile int int100;
  protected transient volatile int int101;
  protected transient volatile int int102;
  protected transient volatile int int103;
  protected transient volatile int int104;
  protected transient volatile int int105;
  protected static final transient int int106 = 5;
  protected static transient volatile int int107;
  int int108;
  int int109;
  int int110;
  int int111;
  int int112;
  int int113;
  int int114;
  int int115;
  static int int116;
  transient int int117;
  transient int int118;
  transient int int119;
  transient int int120;
  transient int int121;
  transient int int122;
  final int int123 = 5;
  volatile int int124;
  volatile int int125;
  volatile int int126;
  volatile int int127;
  volatile int int128;
  volatile int int129;
  volatile int int130;
  volatile int int131;
  static transient int int132;
  static final int int133 = 5;
  static volatile int int134;
  final transient int int135 = 5;
  transient volatile int int136;
  transient volatile int int137;
  transient volatile int int138;
  transient volatile int int139;
  transient volatile int int140;
  transient volatile int int141;
  static final transient int int142 = 5;
  static transient volatile int int143;

  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 int int0",
    "embedded= true   private int int1",
    "embedded= false   private int int2",
    "persistence-modifier= none    private int int3",
    "persistence-modifier= persistent    private int int4",
    "persistence-modifier= persistent  embedded= true   private int int5",
    "persistence-modifier= persistent  embedded= false   private int int6",
    "persistence-modifier= transactional    private int int7",
    "private static int int8",
    "private transient int int9",
    "persistence-modifier= none    private transient int int10",
    "persistence-modifier= persistent    private transient int int11",
    "persistence-modifier= persistent  embedded= true   private transient int int12",
    "persistence-modifier= persistent  embedded= false   private transient int int13",
    "persistence-modifier= transactional    private transient int int14",
    "private final int int15",
    "private volatile int int16",
    "embedded= true   private volatile int int17",
    "embedded= false   private volatile int int18",
    "persistence-modifier= none    private volatile int int19",
    "persistence-modifier= persistent    private volatile int int20",
    "persistence-modifier= persistent  embedded= true   private volatile int int21",
    "persistence-modifier= persistent  embedded= false   private volatile int int22",
    "persistence-modifier= transactional    private volatile int int23",
    "private static transient int int24",
    "private static final int int25",
    "private static volatile int int26",
    "private transient final int int27",
    "private transient volatile int int28",
    "persistence-modifier= none    private transient volatile int int29",
    "persistence-modifier= persistent    private transient volatile int int30",
    "persistence-modifier= persistent  embedded= true   private transient volatile int int31",
    "persistence-modifier= persistent  embedded= false   private transient volatile int int32",
    "persistence-modifier= transactional    private transient volatile int int33",
    "private static transient final int int34",
    "private static transient volatile int int35",
    "public int int36",
    "embedded= true   public int int37",
    "embedded= false   public int int38",
    "persistence-modifier= none    public int int39",
    "persistence-modifier= persistent    public int int40",
    "persistence-modifier= persistent  embedded= true   public int int41",
    "persistence-modifier= persistent  embedded= false   public int int42",
    "persistence-modifier= transactional    public int int43",
    "public static int int44",
    "public transient int int45",
    "persistence-modifier= none    public transient int int46",
    "persistence-modifier= persistent    public transient int int47",
    "persistence-modifier= persistent  embedded= true   public transient int int48",
    "persistence-modifier= persistent  embedded= false   public transient int int49",
    "persistence-modifier= transactional    public transient int int50",
    "public final int int51",
    "public volatile int int52",
    "embedded= true   public volatile int int53",
    "embedded= false   public volatile int int54",
    "persistence-modifier= none    public volatile int int55",
    "persistence-modifier= persistent    public volatile int int56",
    "persistence-modifier= persistent  embedded= true   public volatile int int57",
    "persistence-modifier= persistent  embedded= false   public volatile int int58",
    "persistence-modifier= transactional    public volatile int int59",
    "public static transient int int60",
    "public static final int int61",
    "public static volatile int int62",
    "public transient final int int63",
    "public transient volatile int int64",
    "persistence-modifier= none    public transient volatile int int65",
    "persistence-modifier= persistent    public transient volatile int int66",
    "persistence-modifier= persistent  embedded= true   public transient volatile int int67",
    "persistence-modifier= persistent  embedded= false   public transient volatile int int68",
    "persistence-modifier= transactional    public transient volatile int int69",
    "public static transient final int int70",
    "public static transient volatile int int71",
    "protected int int72",
    "embedded= true   protected int int73",
    "embedded= false   protected int int74",
    "persistence-modifier= none    protected int int75",
    "persistence-modifier= persistent    protected int int76",
    "persistence-modifier= persistent  embedded= true   protected int int77",
    "persistence-modifier= persistent  embedded= false   protected int int78",
    "persistence-modifier= transactional    protected int int79",
    "protected static int int80",
    "protected transient int int81",
    "persistence-modifier= none    protected transient int int82",
    "persistence-modifier= persistent    protected transient int int83",
    "persistence-modifier= persistent  embedded= true   protected transient int int84",
    "persistence-modifier= persistent  embedded= false   protected transient int int85",
    "persistence-modifier= transactional    protected transient int int86",
    "protected final int int87",
    "protected volatile int int88",
    "embedded= true   protected volatile int int89",
    "embedded= false   protected volatile int int90",
    "persistence-modifier= none    protected volatile int int91",
    "persistence-modifier= persistent    protected volatile int int92",
    "persistence-modifier= persistent  embedded= true   protected volatile int int93",
    "persistence-modifier= persistent  embedded= false   protected volatile int int94",
    "persistence-modifier= transactional    protected volatile int int95",
    "protected static transient int int96",
    "protected static final int int97",
    "protected static volatile int int98",
    "protected transient final int int99",
    "protected transient volatile int int100",
    "persistence-modifier= none    protected transient volatile int int101",
    "persistence-modifier= persistent    protected transient volatile int int102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile int int103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile int int104",
    "persistence-modifier= transactional    protected transient volatile int int105",
    "protected static transient final int int106",
    "protected static transient volatile int int107",
    "int int108",
    "embedded= true   int int109",
    "embedded= false   int int110",
    "persistence-modifier= none    int int111",
    "persistence-modifier= persistent    int int112",
    "persistence-modifier= persistent  embedded= true   int int113",
    "persistence-modifier= persistent  embedded= false   int int114",
    "persistence-modifier= transactional    int int115",
    "static int int116",
    "transient int int117",
    "persistence-modifier= none    transient int int118",
    "persistence-modifier= persistent    transient int int119",
    "persistence-modifier= persistent  embedded= true   transient int int120",
    "persistence-modifier= persistent  embedded= false   transient int int121",
    "persistence-modifier= transactional    transient int int122",
    "final int int123",
    "volatile int int124",
    "embedded= true   volatile int int125",
    "embedded= false   volatile int int126",
    "persistence-modifier= none    volatile int int127",
    "persistence-modifier= persistent    volatile int int128",
    "persistence-modifier= persistent  embedded= true   volatile int int129",
    "persistence-modifier= persistent  embedded= false   volatile int int130",
    "persistence-modifier= transactional    volatile int int131",
    "static transient int int132",
    "static final int int133",
    "static volatile int int134",
    "transient final int int135",
    "transient volatile int int136",
    "persistence-modifier= none    transient volatile int int137",
    "persistence-modifier= persistent    transient volatile int int138",
    "persistence-modifier= persistent  embedded= true   transient volatile int int139",
    "persistence-modifier= persistent  embedded= false   transient volatile int int140",
    "persistence-modifier= transactional    transient volatile int int141",
    "static transient final int int142",
    "static transient volatile int int143"
  };

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

  public int get(int index) {
    switch (index) {
      case (0):
        return int0;
      case (1):
        return int1;
      case (2):
        return int2;
      case (3):
        return int3;
      case (4):
        return int4;
      case (5):
        return int5;
      case (6):
        return int6;
      case (7):
        return int7;
      case (8):
        return int8;
      case (9):
        return int9;
      case (10):
        return int10;
      case (11):
        return int11;
      case (12):
        return int12;
      case (13):
        return int13;
      case (14):
        return int14;
      case (15):
        return int15;
      case (16):
        return int16;
      case (17):
        return int17;
      case (18):
        return int18;
      case (19):
        return int19;
      case (20):
        return int20;
      case (21):
        return int21;
      case (22):
        return int22;
      case (23):
        return int23;
      case (24):
        return int24;
      case (25):
        return int25;
      case (26):
        return int26;
      case (27):
        return int27;
      case (28):
        return int28;
      case (29):
        return int29;
      case (30):
        return int30;
      case (31):
        return int31;
      case (32):
        return int32;
      case (33):
        return int33;
      case (34):
        return int34;
      case (35):
        return int35;
      case (36):
        return int36;
      case (37):
        return int37;
      case (38):
        return int38;
      case (39):
        return int39;
      case (40):
        return int40;
      case (41):
        return int41;
      case (42):
        return int42;
      case (43):
        return int43;
      case (44):
        return int44;
      case (45):
        return int45;
      case (46):
        return int46;
      case (47):
        return int47;
      case (48):
        return int48;
      case (49):
        return int49;
      case (50):
        return int50;
      case (51):
        return int51;
      case (52):
        return int52;
      case (53):
        return int53;
      case (54):
        return int54;
      case (55):
        return int55;
      case (56):
        return int56;
      case (57):
        return int57;
      case (58):
        return int58;
      case (59):
        return int59;
      case (60):
        return int60;
      case (61):
        return int61;
      case (62):
        return int62;
      case (63):
        return int63;
      case (64):
        return int64;
      case (65):
        return int65;
      case (66):
        return int66;
      case (67):
        return int67;
      case (68):
        return int68;
      case (69):
        return int69;
      case (70):
        return int70;
      case (71):
        return int71;
      case (72):
        return int72;
      case (73):
        return int73;
      case (74):
        return int74;
      case (75):
        return int75;
      case (76):
        return int76;
      case (77):
        return int77;
      case (78):
        return int78;
      case (79):
        return int79;
      case (80):
        return int80;
      case (81):
        return int81;
      case (82):
        return int82;
      case (83):
        return int83;
      case (84):
        return int84;
      case (85):
        return int85;
      case (86):
        return int86;
      case (87):
        return int87;
      case (88):
        return int88;
      case (89):
        return int89;
      case (90):
        return int90;
      case (91):
        return int91;
      case (92):
        return int92;
      case (93):
        return int93;
      case (94):
        return int94;
      case (95):
        return int95;
      case (96):
        return int96;
      case (97):
        return int97;
      case (98):
        return int98;
      case (99):
        return int99;
      case (100):
        return int100;
      case (101):
        return int101;
      case (102):
        return int102;
      case (103):
        return int103;
      case (104):
        return int104;
      case (105):
        return int105;
      case (106):
        return int106;
      case (107):
        return int107;
      case (108):
        return int108;
      case (109):
        return int109;
      case (110):
        return int110;
      case (111):
        return int111;
      case (112):
        return int112;
      case (113):
        return int113;
      case (114):
        return int114;
      case (115):
        return int115;
      case (116):
        return int116;
      case (117):
        return int117;
      case (118):
        return int118;
      case (119):
        return int119;
      case (120):
        return int120;
      case (121):
        return int121;
      case (122):
        return int122;
      case (123):
        return int123;
      case (124):
        return int124;
      case (125):
        return int125;
      case (126):
        return int126;
      case (127):
        return int127;
      case (128):
        return int128;
      case (129):
        return int129;
      case (130):
        return int130;
      case (131):
        return int131;
      case (132):
        return int132;
      case (133):
        return int133;
      case (134):
        return int134;
      case (135):
        return int135;
      case (136):
        return int136;
      case (137):
        return int137;
      case (138):
        return int138;
      case (139):
        return int139;
      case (140):
        return int140;
      case (141):
        return int141;
      case (142):
        return int142;
      case (143):
        return int143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, int value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        int0 = value;
        break;
      case (1):
        int1 = value;
        break;
      case (2):
        int2 = value;
        break;
      case (3):
        int3 = value;
        break;
      case (4):
        int4 = value;
        break;
      case (5):
        int5 = value;
        break;
      case (6):
        int6 = value;
        break;
      case (7):
        int7 = value;
        break;
      case (8):
        int8 = value;
        break;
      case (9):
        int9 = value;
        break;
      case (10):
        int10 = value;
        break;
      case (11):
        int11 = value;
        break;
      case (12):
        int12 = value;
        break;
      case (13):
        int13 = value;
        break;
      case (14):
        int14 = value;
        break;
      case (16):
        int16 = value;
        break;
      case (17):
        int17 = value;
        break;
      case (18):
        int18 = value;
        break;
      case (19):
        int19 = value;
        break;
      case (20):
        int20 = value;
        break;
      case (21):
        int21 = value;
        break;
      case (22):
        int22 = value;
        break;
      case (23):
        int23 = value;
        break;
      case (24):
        int24 = value;
        break;
      case (26):
        int26 = value;
        break;
      case (28):
        int28 = value;
        break;
      case (29):
        int29 = value;
        break;
      case (30):
        int30 = value;
        break;
      case (31):
        int31 = value;
        break;
      case (32):
        int32 = value;
        break;
      case (33):
        int33 = value;
        break;
      case (35):
        int35 = value;
        break;
      case (36):
        int36 = value;
        break;
      case (37):
        int37 = value;
        break;
      case (38):
        int38 = value;
        break;
      case (39):
        int39 = value;
        break;
      case (40):
        int40 = value;
        break;
      case (41):
        int41 = value;
        break;
      case (42):
        int42 = value;
        break;
      case (43):
        int43 = value;
        break;
      case (44):
        int44 = value;
        break;
      case (45):
        int45 = value;
        break;
      case (46):
        int46 = value;
        break;
      case (47):
        int47 = value;
        break;
      case (48):
        int48 = value;
        break;
      case (49):
        int49 = value;
        break;
      case (50):
        int50 = value;
        break;
      case (52):
        int52 = value;
        break;
      case (53):
        int53 = value;
        break;
      case (54):
        int54 = value;
        break;
      case (55):
        int55 = value;
        break;
      case (56):
        int56 = value;
        break;
      case (57):
        int57 = value;
        break;
      case (58):
        int58 = value;
        break;
      case (59):
        int59 = value;
        break;
      case (60):
        int60 = value;
        break;
      case (62):
        int62 = value;
        break;
      case (64):
        int64 = value;
        break;
      case (65):
        int65 = value;
        break;
      case (66):
        int66 = value;
        break;
      case (67):
        int67 = value;
        break;
      case (68):
        int68 = value;
        break;
      case (69):
        int69 = value;
        break;
      case (71):
        int71 = value;
        break;
      case (72):
        int72 = value;
        break;
      case (73):
        int73 = value;
        break;
      case (74):
        int74 = value;
        break;
      case (75):
        int75 = value;
        break;
      case (76):
        int76 = value;
        break;
      case (77):
        int77 = value;
        break;
      case (78):
        int78 = value;
        break;
      case (79):
        int79 = value;
        break;
      case (80):
        int80 = value;
        break;
      case (81):
        int81 = value;
        break;
      case (82):
        int82 = value;
        break;
      case (83):
        int83 = value;
        break;
      case (84):
        int84 = value;
        break;
      case (85):
        int85 = value;
        break;
      case (86):
        int86 = value;
        break;
      case (88):
        int88 = value;
        break;
      case (89):
        int89 = value;
        break;
      case (90):
        int90 = value;
        break;
      case (91):
        int91 = value;
        break;
      case (92):
        int92 = value;
        break;
      case (93):
        int93 = value;
        break;
      case (94):
        int94 = value;
        break;
      case (95):
        int95 = value;
        break;
      case (96):
        int96 = value;
        break;
      case (98):
        int98 = value;
        break;
      case (100):
        int100 = value;
        break;
      case (101):
        int101 = value;
        break;
      case (102):
        int102 = value;
        break;
      case (103):
        int103 = value;
        break;
      case (104):
        int104 = value;
        break;
      case (105):
        int105 = value;
        break;
      case (107):
        int107 = value;
        break;
      case (108):
        int108 = value;
        break;
      case (109):
        int109 = value;
        break;
      case (110):
        int110 = value;
        break;
      case (111):
        int111 = value;
        break;
      case (112):
        int112 = value;
        break;
      case (113):
        int113 = value;
        break;
      case (114):
        int114 = value;
        break;
      case (115):
        int115 = value;
        break;
      case (116):
        int116 = value;
        break;
      case (117):
        int117 = value;
        break;
      case (118):
        int118 = value;
        break;
      case (119):
        int119 = value;
        break;
      case (120):
        int120 = value;
        break;
      case (121):
        int121 = value;
        break;
      case (122):
        int122 = value;
        break;
      case (124):
        int124 = value;
        break;
      case (125):
        int125 = value;
        break;
      case (126):
        int126 = value;
        break;
      case (127):
        int127 = value;
        break;
      case (128):
        int128 = value;
        break;
      case (129):
        int129 = value;
        break;
      case (130):
        int130 = value;
        break;
      case (131):
        int131 = value;
        break;
      case (132):
        int132 = value;
        break;
      case (134):
        int134 = value;
        break;
      case (136):
        int136 = value;
        break;
      case (137):
        int137 = value;
        break;
      case (138):
        int138 = value;
        break;
      case (139):
        int139 = value;
        break;
      case (140):
        int140 = value;
        break;
      case (141):
        int141 = value;
        break;
      case (143):
        int143 = 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);
    }
  }
}
