/*
 * 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 FieldsOfPrimitiveshort {
  public int identifier;
  private short short0;
  private short short1;
  private short short2;
  private short short3;
  private short short4;
  private short short5;
  private short short6;
  private short short7;
  private static short short8;
  private transient short short9;
  private transient short short10;
  private transient short short11;
  private transient short short12;
  private transient short short13;
  private transient short short14;
  private final short short15 = 5;
  private volatile short short16;
  private volatile short short17;
  private volatile short short18;
  private volatile short short19;
  private volatile short short20;
  private volatile short short21;
  private volatile short short22;
  private volatile short short23;
  private static transient short short24;
  private static final short short25 = 5;
  private static volatile short short26;
  private final transient short short27 = 5;
  private transient volatile short short28;
  private transient volatile short short29;
  private transient volatile short short30;
  private transient volatile short short31;
  private transient volatile short short32;
  private transient volatile short short33;
  private static final transient short short34 = 5;
  private static transient volatile short short35;
  public short short36;
  public short short37;
  public short short38;
  public short short39;
  public short short40;
  public short short41;
  public short short42;
  public short short43;
  public static short short44;
  public transient short short45;
  public transient short short46;
  public transient short short47;
  public transient short short48;
  public transient short short49;
  public transient short short50;
  public final short short51 = 5;
  public volatile short short52;
  public volatile short short53;
  public volatile short short54;
  public volatile short short55;
  public volatile short short56;
  public volatile short short57;
  public volatile short short58;
  public volatile short short59;
  public static transient short short60;
  public static final short short61 = 5;
  public static volatile short short62;
  public final transient short short63 = 5;
  public transient volatile short short64;
  public transient volatile short short65;
  public transient volatile short short66;
  public transient volatile short short67;
  public transient volatile short short68;
  public transient volatile short short69;
  public static final transient short short70 = 5;
  public static transient volatile short short71;
  protected short short72;
  protected short short73;
  protected short short74;
  protected short short75;
  protected short short76;
  protected short short77;
  protected short short78;
  protected short short79;
  protected static short short80;
  protected transient short short81;
  protected transient short short82;
  protected transient short short83;
  protected transient short short84;
  protected transient short short85;
  protected transient short short86;
  protected final short short87 = 5;
  protected volatile short short88;
  protected volatile short short89;
  protected volatile short short90;
  protected volatile short short91;
  protected volatile short short92;
  protected volatile short short93;
  protected volatile short short94;
  protected volatile short short95;
  protected static transient short short96;
  protected static final short short97 = 5;
  protected static volatile short short98;
  protected final transient short short99 = 5;
  protected transient volatile short short100;
  protected transient volatile short short101;
  protected transient volatile short short102;
  protected transient volatile short short103;
  protected transient volatile short short104;
  protected transient volatile short short105;
  protected static final transient short short106 = 5;
  protected static transient volatile short short107;
  short short108;
  short short109;
  short short110;
  short short111;
  short short112;
  short short113;
  short short114;
  short short115;
  static short short116;
  transient short short117;
  transient short short118;
  transient short short119;
  transient short short120;
  transient short short121;
  transient short short122;
  final short short123 = 5;
  volatile short short124;
  volatile short short125;
  volatile short short126;
  volatile short short127;
  volatile short short128;
  volatile short short129;
  volatile short short130;
  volatile short short131;
  static transient short short132;
  static final short short133 = 5;
  static volatile short short134;
  final transient short short135 = 5;
  transient volatile short short136;
  transient volatile short short137;
  transient volatile short short138;
  transient volatile short short139;
  transient volatile short short140;
  transient volatile short short141;
  static final transient short short142 = 5;
  static transient volatile short short143;

  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 short short0",
    "embedded= true   private short short1",
    "embedded= false   private short short2",
    "persistence-modifier= none    private short short3",
    "persistence-modifier= persistent    private short short4",
    "persistence-modifier= persistent  embedded= true   private short short5",
    "persistence-modifier= persistent  embedded= false   private short short6",
    "persistence-modifier= transactional    private short short7",
    "private static short short8",
    "private transient short short9",
    "persistence-modifier= none    private transient short short10",
    "persistence-modifier= persistent    private transient short short11",
    "persistence-modifier= persistent  embedded= true   private transient short short12",
    "persistence-modifier= persistent  embedded= false   private transient short short13",
    "persistence-modifier= transactional    private transient short short14",
    "private final short short15",
    "private volatile short short16",
    "embedded= true   private volatile short short17",
    "embedded= false   private volatile short short18",
    "persistence-modifier= none    private volatile short short19",
    "persistence-modifier= persistent    private volatile short short20",
    "persistence-modifier= persistent  embedded= true   private volatile short short21",
    "persistence-modifier= persistent  embedded= false   private volatile short short22",
    "persistence-modifier= transactional    private volatile short short23",
    "private static transient short short24",
    "private static final short short25",
    "private static volatile short short26",
    "private transient final short short27",
    "private transient volatile short short28",
    "persistence-modifier= none    private transient volatile short short29",
    "persistence-modifier= persistent    private transient volatile short short30",
    "persistence-modifier= persistent  embedded= true   private transient volatile short short31",
    "persistence-modifier= persistent  embedded= false   private transient volatile short short32",
    "persistence-modifier= transactional    private transient volatile short short33",
    "private static transient final short short34",
    "private static transient volatile short short35",
    "public short short36",
    "embedded= true   public short short37",
    "embedded= false   public short short38",
    "persistence-modifier= none    public short short39",
    "persistence-modifier= persistent    public short short40",
    "persistence-modifier= persistent  embedded= true   public short short41",
    "persistence-modifier= persistent  embedded= false   public short short42",
    "persistence-modifier= transactional    public short short43",
    "public static short short44",
    "public transient short short45",
    "persistence-modifier= none    public transient short short46",
    "persistence-modifier= persistent    public transient short short47",
    "persistence-modifier= persistent  embedded= true   public transient short short48",
    "persistence-modifier= persistent  embedded= false   public transient short short49",
    "persistence-modifier= transactional    public transient short short50",
    "public final short short51",
    "public volatile short short52",
    "embedded= true   public volatile short short53",
    "embedded= false   public volatile short short54",
    "persistence-modifier= none    public volatile short short55",
    "persistence-modifier= persistent    public volatile short short56",
    "persistence-modifier= persistent  embedded= true   public volatile short short57",
    "persistence-modifier= persistent  embedded= false   public volatile short short58",
    "persistence-modifier= transactional    public volatile short short59",
    "public static transient short short60",
    "public static final short short61",
    "public static volatile short short62",
    "public transient final short short63",
    "public transient volatile short short64",
    "persistence-modifier= none    public transient volatile short short65",
    "persistence-modifier= persistent    public transient volatile short short66",
    "persistence-modifier= persistent  embedded= true   public transient volatile short short67",
    "persistence-modifier= persistent  embedded= false   public transient volatile short short68",
    "persistence-modifier= transactional    public transient volatile short short69",
    "public static transient final short short70",
    "public static transient volatile short short71",
    "protected short short72",
    "embedded= true   protected short short73",
    "embedded= false   protected short short74",
    "persistence-modifier= none    protected short short75",
    "persistence-modifier= persistent    protected short short76",
    "persistence-modifier= persistent  embedded= true   protected short short77",
    "persistence-modifier= persistent  embedded= false   protected short short78",
    "persistence-modifier= transactional    protected short short79",
    "protected static short short80",
    "protected transient short short81",
    "persistence-modifier= none    protected transient short short82",
    "persistence-modifier= persistent    protected transient short short83",
    "persistence-modifier= persistent  embedded= true   protected transient short short84",
    "persistence-modifier= persistent  embedded= false   protected transient short short85",
    "persistence-modifier= transactional    protected transient short short86",
    "protected final short short87",
    "protected volatile short short88",
    "embedded= true   protected volatile short short89",
    "embedded= false   protected volatile short short90",
    "persistence-modifier= none    protected volatile short short91",
    "persistence-modifier= persistent    protected volatile short short92",
    "persistence-modifier= persistent  embedded= true   protected volatile short short93",
    "persistence-modifier= persistent  embedded= false   protected volatile short short94",
    "persistence-modifier= transactional    protected volatile short short95",
    "protected static transient short short96",
    "protected static final short short97",
    "protected static volatile short short98",
    "protected transient final short short99",
    "protected transient volatile short short100",
    "persistence-modifier= none    protected transient volatile short short101",
    "persistence-modifier= persistent    protected transient volatile short short102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile short short103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile short short104",
    "persistence-modifier= transactional    protected transient volatile short short105",
    "protected static transient final short short106",
    "protected static transient volatile short short107",
    "short short108",
    "embedded= true   short short109",
    "embedded= false   short short110",
    "persistence-modifier= none    short short111",
    "persistence-modifier= persistent    short short112",
    "persistence-modifier= persistent  embedded= true   short short113",
    "persistence-modifier= persistent  embedded= false   short short114",
    "persistence-modifier= transactional    short short115",
    "static short short116",
    "transient short short117",
    "persistence-modifier= none    transient short short118",
    "persistence-modifier= persistent    transient short short119",
    "persistence-modifier= persistent  embedded= true   transient short short120",
    "persistence-modifier= persistent  embedded= false   transient short short121",
    "persistence-modifier= transactional    transient short short122",
    "final short short123",
    "volatile short short124",
    "embedded= true   volatile short short125",
    "embedded= false   volatile short short126",
    "persistence-modifier= none    volatile short short127",
    "persistence-modifier= persistent    volatile short short128",
    "persistence-modifier= persistent  embedded= true   volatile short short129",
    "persistence-modifier= persistent  embedded= false   volatile short short130",
    "persistence-modifier= transactional    volatile short short131",
    "static transient short short132",
    "static final short short133",
    "static volatile short short134",
    "transient final short short135",
    "transient volatile short short136",
    "persistence-modifier= none    transient volatile short short137",
    "persistence-modifier= persistent    transient volatile short short138",
    "persistence-modifier= persistent  embedded= true   transient volatile short short139",
    "persistence-modifier= persistent  embedded= false   transient volatile short short140",
    "persistence-modifier= transactional    transient volatile short short141",
    "static transient final short short142",
    "static transient volatile short short143"
  };

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

  public short get(int index) {
    switch (index) {
      case (0):
        return short0;
      case (1):
        return short1;
      case (2):
        return short2;
      case (3):
        return short3;
      case (4):
        return short4;
      case (5):
        return short5;
      case (6):
        return short6;
      case (7):
        return short7;
      case (8):
        return short8;
      case (9):
        return short9;
      case (10):
        return short10;
      case (11):
        return short11;
      case (12):
        return short12;
      case (13):
        return short13;
      case (14):
        return short14;
      case (15):
        return short15;
      case (16):
        return short16;
      case (17):
        return short17;
      case (18):
        return short18;
      case (19):
        return short19;
      case (20):
        return short20;
      case (21):
        return short21;
      case (22):
        return short22;
      case (23):
        return short23;
      case (24):
        return short24;
      case (25):
        return short25;
      case (26):
        return short26;
      case (27):
        return short27;
      case (28):
        return short28;
      case (29):
        return short29;
      case (30):
        return short30;
      case (31):
        return short31;
      case (32):
        return short32;
      case (33):
        return short33;
      case (34):
        return short34;
      case (35):
        return short35;
      case (36):
        return short36;
      case (37):
        return short37;
      case (38):
        return short38;
      case (39):
        return short39;
      case (40):
        return short40;
      case (41):
        return short41;
      case (42):
        return short42;
      case (43):
        return short43;
      case (44):
        return short44;
      case (45):
        return short45;
      case (46):
        return short46;
      case (47):
        return short47;
      case (48):
        return short48;
      case (49):
        return short49;
      case (50):
        return short50;
      case (51):
        return short51;
      case (52):
        return short52;
      case (53):
        return short53;
      case (54):
        return short54;
      case (55):
        return short55;
      case (56):
        return short56;
      case (57):
        return short57;
      case (58):
        return short58;
      case (59):
        return short59;
      case (60):
        return short60;
      case (61):
        return short61;
      case (62):
        return short62;
      case (63):
        return short63;
      case (64):
        return short64;
      case (65):
        return short65;
      case (66):
        return short66;
      case (67):
        return short67;
      case (68):
        return short68;
      case (69):
        return short69;
      case (70):
        return short70;
      case (71):
        return short71;
      case (72):
        return short72;
      case (73):
        return short73;
      case (74):
        return short74;
      case (75):
        return short75;
      case (76):
        return short76;
      case (77):
        return short77;
      case (78):
        return short78;
      case (79):
        return short79;
      case (80):
        return short80;
      case (81):
        return short81;
      case (82):
        return short82;
      case (83):
        return short83;
      case (84):
        return short84;
      case (85):
        return short85;
      case (86):
        return short86;
      case (87):
        return short87;
      case (88):
        return short88;
      case (89):
        return short89;
      case (90):
        return short90;
      case (91):
        return short91;
      case (92):
        return short92;
      case (93):
        return short93;
      case (94):
        return short94;
      case (95):
        return short95;
      case (96):
        return short96;
      case (97):
        return short97;
      case (98):
        return short98;
      case (99):
        return short99;
      case (100):
        return short100;
      case (101):
        return short101;
      case (102):
        return short102;
      case (103):
        return short103;
      case (104):
        return short104;
      case (105):
        return short105;
      case (106):
        return short106;
      case (107):
        return short107;
      case (108):
        return short108;
      case (109):
        return short109;
      case (110):
        return short110;
      case (111):
        return short111;
      case (112):
        return short112;
      case (113):
        return short113;
      case (114):
        return short114;
      case (115):
        return short115;
      case (116):
        return short116;
      case (117):
        return short117;
      case (118):
        return short118;
      case (119):
        return short119;
      case (120):
        return short120;
      case (121):
        return short121;
      case (122):
        return short122;
      case (123):
        return short123;
      case (124):
        return short124;
      case (125):
        return short125;
      case (126):
        return short126;
      case (127):
        return short127;
      case (128):
        return short128;
      case (129):
        return short129;
      case (130):
        return short130;
      case (131):
        return short131;
      case (132):
        return short132;
      case (133):
        return short133;
      case (134):
        return short134;
      case (135):
        return short135;
      case (136):
        return short136;
      case (137):
        return short137;
      case (138):
        return short138;
      case (139):
        return short139;
      case (140):
        return short140;
      case (141):
        return short141;
      case (142):
        return short142;
      case (143):
        return short143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, short value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        short0 = value;
        break;
      case (1):
        short1 = value;
        break;
      case (2):
        short2 = value;
        break;
      case (3):
        short3 = value;
        break;
      case (4):
        short4 = value;
        break;
      case (5):
        short5 = value;
        break;
      case (6):
        short6 = value;
        break;
      case (7):
        short7 = value;
        break;
      case (8):
        short8 = value;
        break;
      case (9):
        short9 = value;
        break;
      case (10):
        short10 = value;
        break;
      case (11):
        short11 = value;
        break;
      case (12):
        short12 = value;
        break;
      case (13):
        short13 = value;
        break;
      case (14):
        short14 = value;
        break;
      case (16):
        short16 = value;
        break;
      case (17):
        short17 = value;
        break;
      case (18):
        short18 = value;
        break;
      case (19):
        short19 = value;
        break;
      case (20):
        short20 = value;
        break;
      case (21):
        short21 = value;
        break;
      case (22):
        short22 = value;
        break;
      case (23):
        short23 = value;
        break;
      case (24):
        short24 = value;
        break;
      case (26):
        short26 = value;
        break;
      case (28):
        short28 = value;
        break;
      case (29):
        short29 = value;
        break;
      case (30):
        short30 = value;
        break;
      case (31):
        short31 = value;
        break;
      case (32):
        short32 = value;
        break;
      case (33):
        short33 = value;
        break;
      case (35):
        short35 = value;
        break;
      case (36):
        short36 = value;
        break;
      case (37):
        short37 = value;
        break;
      case (38):
        short38 = value;
        break;
      case (39):
        short39 = value;
        break;
      case (40):
        short40 = value;
        break;
      case (41):
        short41 = value;
        break;
      case (42):
        short42 = value;
        break;
      case (43):
        short43 = value;
        break;
      case (44):
        short44 = value;
        break;
      case (45):
        short45 = value;
        break;
      case (46):
        short46 = value;
        break;
      case (47):
        short47 = value;
        break;
      case (48):
        short48 = value;
        break;
      case (49):
        short49 = value;
        break;
      case (50):
        short50 = value;
        break;
      case (52):
        short52 = value;
        break;
      case (53):
        short53 = value;
        break;
      case (54):
        short54 = value;
        break;
      case (55):
        short55 = value;
        break;
      case (56):
        short56 = value;
        break;
      case (57):
        short57 = value;
        break;
      case (58):
        short58 = value;
        break;
      case (59):
        short59 = value;
        break;
      case (60):
        short60 = value;
        break;
      case (62):
        short62 = value;
        break;
      case (64):
        short64 = value;
        break;
      case (65):
        short65 = value;
        break;
      case (66):
        short66 = value;
        break;
      case (67):
        short67 = value;
        break;
      case (68):
        short68 = value;
        break;
      case (69):
        short69 = value;
        break;
      case (71):
        short71 = value;
        break;
      case (72):
        short72 = value;
        break;
      case (73):
        short73 = value;
        break;
      case (74):
        short74 = value;
        break;
      case (75):
        short75 = value;
        break;
      case (76):
        short76 = value;
        break;
      case (77):
        short77 = value;
        break;
      case (78):
        short78 = value;
        break;
      case (79):
        short79 = value;
        break;
      case (80):
        short80 = value;
        break;
      case (81):
        short81 = value;
        break;
      case (82):
        short82 = value;
        break;
      case (83):
        short83 = value;
        break;
      case (84):
        short84 = value;
        break;
      case (85):
        short85 = value;
        break;
      case (86):
        short86 = value;
        break;
      case (88):
        short88 = value;
        break;
      case (89):
        short89 = value;
        break;
      case (90):
        short90 = value;
        break;
      case (91):
        short91 = value;
        break;
      case (92):
        short92 = value;
        break;
      case (93):
        short93 = value;
        break;
      case (94):
        short94 = value;
        break;
      case (95):
        short95 = value;
        break;
      case (96):
        short96 = value;
        break;
      case (98):
        short98 = value;
        break;
      case (100):
        short100 = value;
        break;
      case (101):
        short101 = value;
        break;
      case (102):
        short102 = value;
        break;
      case (103):
        short103 = value;
        break;
      case (104):
        short104 = value;
        break;
      case (105):
        short105 = value;
        break;
      case (107):
        short107 = value;
        break;
      case (108):
        short108 = value;
        break;
      case (109):
        short109 = value;
        break;
      case (110):
        short110 = value;
        break;
      case (111):
        short111 = value;
        break;
      case (112):
        short112 = value;
        break;
      case (113):
        short113 = value;
        break;
      case (114):
        short114 = value;
        break;
      case (115):
        short115 = value;
        break;
      case (116):
        short116 = value;
        break;
      case (117):
        short117 = value;
        break;
      case (118):
        short118 = value;
        break;
      case (119):
        short119 = value;
        break;
      case (120):
        short120 = value;
        break;
      case (121):
        short121 = value;
        break;
      case (122):
        short122 = value;
        break;
      case (124):
        short124 = value;
        break;
      case (125):
        short125 = value;
        break;
      case (126):
        short126 = value;
        break;
      case (127):
        short127 = value;
        break;
      case (128):
        short128 = value;
        break;
      case (129):
        short129 = value;
        break;
      case (130):
        short130 = value;
        break;
      case (131):
        short131 = value;
        break;
      case (132):
        short132 = value;
        break;
      case (134):
        short134 = value;
        break;
      case (136):
        short136 = value;
        break;
      case (137):
        short137 = value;
        break;
      case (138):
        short138 = value;
        break;
      case (139):
        short139 = value;
        break;
      case (140):
        short140 = value;
        break;
      case (141):
        short141 = value;
        break;
      case (143):
        short143 = 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);
    }
  }
}
