/*
 * 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 FieldsOfPrimitivefloat {
  public int identifier;
  private float float0;
  private float float1;
  private float float2;
  private float float3;
  private float float4;
  private float float5;
  private float float6;
  private float float7;
  private static float float8;
  private transient float float9;
  private transient float float10;
  private transient float float11;
  private transient float float12;
  private transient float float13;
  private transient float float14;
  private final float float15 = 5;
  private volatile float float16;
  private volatile float float17;
  private volatile float float18;
  private volatile float float19;
  private volatile float float20;
  private volatile float float21;
  private volatile float float22;
  private volatile float float23;
  private static transient float float24;
  private static final float float25 = 5;
  private static volatile float float26;
  private final transient float float27 = 5;
  private transient volatile float float28;
  private transient volatile float float29;
  private transient volatile float float30;
  private transient volatile float float31;
  private transient volatile float float32;
  private transient volatile float float33;
  private static final transient float float34 = 5;
  private static transient volatile float float35;
  public float float36;
  public float float37;
  public float float38;
  public float float39;
  public float float40;
  public float float41;
  public float float42;
  public float float43;
  public static float float44;
  public transient float float45;
  public transient float float46;
  public transient float float47;
  public transient float float48;
  public transient float float49;
  public transient float float50;
  public final float float51 = 5;
  public volatile float float52;
  public volatile float float53;
  public volatile float float54;
  public volatile float float55;
  public volatile float float56;
  public volatile float float57;
  public volatile float float58;
  public volatile float float59;
  public static transient float float60;
  public static final float float61 = 5;
  public static volatile float float62;
  public final transient float float63 = 5;
  public transient volatile float float64;
  public transient volatile float float65;
  public transient volatile float float66;
  public transient volatile float float67;
  public transient volatile float float68;
  public transient volatile float float69;
  public static final transient float float70 = 5;
  public static transient volatile float float71;
  protected float float72;
  protected float float73;
  protected float float74;
  protected float float75;
  protected float float76;
  protected float float77;
  protected float float78;
  protected float float79;
  protected static float float80;
  protected transient float float81;
  protected transient float float82;
  protected transient float float83;
  protected transient float float84;
  protected transient float float85;
  protected transient float float86;
  protected final float float87 = 5;
  protected volatile float float88;
  protected volatile float float89;
  protected volatile float float90;
  protected volatile float float91;
  protected volatile float float92;
  protected volatile float float93;
  protected volatile float float94;
  protected volatile float float95;
  protected static transient float float96;
  protected static final float float97 = 5;
  protected static volatile float float98;
  protected final transient float float99 = 5;
  protected transient volatile float float100;
  protected transient volatile float float101;
  protected transient volatile float float102;
  protected transient volatile float float103;
  protected transient volatile float float104;
  protected transient volatile float float105;
  protected static final transient float float106 = 5;
  protected static transient volatile float float107;
  float float108;
  float float109;
  float float110;
  float float111;
  float float112;
  float float113;
  float float114;
  float float115;
  static float float116;
  transient float float117;
  transient float float118;
  transient float float119;
  transient float float120;
  transient float float121;
  transient float float122;
  final float float123 = 5;
  volatile float float124;
  volatile float float125;
  volatile float float126;
  volatile float float127;
  volatile float float128;
  volatile float float129;
  volatile float float130;
  volatile float float131;
  static transient float float132;
  static final float float133 = 5;
  static volatile float float134;
  final transient float float135 = 5;
  transient volatile float float136;
  transient volatile float float137;
  transient volatile float float138;
  transient volatile float float139;
  transient volatile float float140;
  transient volatile float float141;
  static final transient float float142 = 5;
  static transient volatile float float143;

  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 float float0",
    "embedded= true   private float float1",
    "embedded= false   private float float2",
    "persistence-modifier= none    private float float3",
    "persistence-modifier= persistent    private float float4",
    "persistence-modifier= persistent  embedded= true   private float float5",
    "persistence-modifier= persistent  embedded= false   private float float6",
    "persistence-modifier= transactional    private float float7",
    "private static float float8",
    "private transient float float9",
    "persistence-modifier= none    private transient float float10",
    "persistence-modifier= persistent    private transient float float11",
    "persistence-modifier= persistent  embedded= true   private transient float float12",
    "persistence-modifier= persistent  embedded= false   private transient float float13",
    "persistence-modifier= transactional    private transient float float14",
    "private final float float15",
    "private volatile float float16",
    "embedded= true   private volatile float float17",
    "embedded= false   private volatile float float18",
    "persistence-modifier= none    private volatile float float19",
    "persistence-modifier= persistent    private volatile float float20",
    "persistence-modifier= persistent  embedded= true   private volatile float float21",
    "persistence-modifier= persistent  embedded= false   private volatile float float22",
    "persistence-modifier= transactional    private volatile float float23",
    "private static transient float float24",
    "private static final float float25",
    "private static volatile float float26",
    "private transient final float float27",
    "private transient volatile float float28",
    "persistence-modifier= none    private transient volatile float float29",
    "persistence-modifier= persistent    private transient volatile float float30",
    "persistence-modifier= persistent  embedded= true   private transient volatile float float31",
    "persistence-modifier= persistent  embedded= false   private transient volatile float float32",
    "persistence-modifier= transactional    private transient volatile float float33",
    "private static transient final float float34",
    "private static transient volatile float float35",
    "public float float36",
    "embedded= true   public float float37",
    "embedded= false   public float float38",
    "persistence-modifier= none    public float float39",
    "persistence-modifier= persistent    public float float40",
    "persistence-modifier= persistent  embedded= true   public float float41",
    "persistence-modifier= persistent  embedded= false   public float float42",
    "persistence-modifier= transactional    public float float43",
    "public static float float44",
    "public transient float float45",
    "persistence-modifier= none    public transient float float46",
    "persistence-modifier= persistent    public transient float float47",
    "persistence-modifier= persistent  embedded= true   public transient float float48",
    "persistence-modifier= persistent  embedded= false   public transient float float49",
    "persistence-modifier= transactional    public transient float float50",
    "public final float float51",
    "public volatile float float52",
    "embedded= true   public volatile float float53",
    "embedded= false   public volatile float float54",
    "persistence-modifier= none    public volatile float float55",
    "persistence-modifier= persistent    public volatile float float56",
    "persistence-modifier= persistent  embedded= true   public volatile float float57",
    "persistence-modifier= persistent  embedded= false   public volatile float float58",
    "persistence-modifier= transactional    public volatile float float59",
    "public static transient float float60",
    "public static final float float61",
    "public static volatile float float62",
    "public transient final float float63",
    "public transient volatile float float64",
    "persistence-modifier= none    public transient volatile float float65",
    "persistence-modifier= persistent    public transient volatile float float66",
    "persistence-modifier= persistent  embedded= true   public transient volatile float float67",
    "persistence-modifier= persistent  embedded= false   public transient volatile float float68",
    "persistence-modifier= transactional    public transient volatile float float69",
    "public static transient final float float70",
    "public static transient volatile float float71",
    "protected float float72",
    "embedded= true   protected float float73",
    "embedded= false   protected float float74",
    "persistence-modifier= none    protected float float75",
    "persistence-modifier= persistent    protected float float76",
    "persistence-modifier= persistent  embedded= true   protected float float77",
    "persistence-modifier= persistent  embedded= false   protected float float78",
    "persistence-modifier= transactional    protected float float79",
    "protected static float float80",
    "protected transient float float81",
    "persistence-modifier= none    protected transient float float82",
    "persistence-modifier= persistent    protected transient float float83",
    "persistence-modifier= persistent  embedded= true   protected transient float float84",
    "persistence-modifier= persistent  embedded= false   protected transient float float85",
    "persistence-modifier= transactional    protected transient float float86",
    "protected final float float87",
    "protected volatile float float88",
    "embedded= true   protected volatile float float89",
    "embedded= false   protected volatile float float90",
    "persistence-modifier= none    protected volatile float float91",
    "persistence-modifier= persistent    protected volatile float float92",
    "persistence-modifier= persistent  embedded= true   protected volatile float float93",
    "persistence-modifier= persistent  embedded= false   protected volatile float float94",
    "persistence-modifier= transactional    protected volatile float float95",
    "protected static transient float float96",
    "protected static final float float97",
    "protected static volatile float float98",
    "protected transient final float float99",
    "protected transient volatile float float100",
    "persistence-modifier= none    protected transient volatile float float101",
    "persistence-modifier= persistent    protected transient volatile float float102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile float float103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile float float104",
    "persistence-modifier= transactional    protected transient volatile float float105",
    "protected static transient final float float106",
    "protected static transient volatile float float107",
    "float float108",
    "embedded= true   float float109",
    "embedded= false   float float110",
    "persistence-modifier= none    float float111",
    "persistence-modifier= persistent    float float112",
    "persistence-modifier= persistent  embedded= true   float float113",
    "persistence-modifier= persistent  embedded= false   float float114",
    "persistence-modifier= transactional    float float115",
    "static float float116",
    "transient float float117",
    "persistence-modifier= none    transient float float118",
    "persistence-modifier= persistent    transient float float119",
    "persistence-modifier= persistent  embedded= true   transient float float120",
    "persistence-modifier= persistent  embedded= false   transient float float121",
    "persistence-modifier= transactional    transient float float122",
    "final float float123",
    "volatile float float124",
    "embedded= true   volatile float float125",
    "embedded= false   volatile float float126",
    "persistence-modifier= none    volatile float float127",
    "persistence-modifier= persistent    volatile float float128",
    "persistence-modifier= persistent  embedded= true   volatile float float129",
    "persistence-modifier= persistent  embedded= false   volatile float float130",
    "persistence-modifier= transactional    volatile float float131",
    "static transient float float132",
    "static final float float133",
    "static volatile float float134",
    "transient final float float135",
    "transient volatile float float136",
    "persistence-modifier= none    transient volatile float float137",
    "persistence-modifier= persistent    transient volatile float float138",
    "persistence-modifier= persistent  embedded= true   transient volatile float float139",
    "persistence-modifier= persistent  embedded= false   transient volatile float float140",
    "persistence-modifier= transactional    transient volatile float float141",
    "static transient final float float142",
    "static transient volatile float float143"
  };

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

  public float get(int index) {
    switch (index) {
      case (0):
        return float0;
      case (1):
        return float1;
      case (2):
        return float2;
      case (3):
        return float3;
      case (4):
        return float4;
      case (5):
        return float5;
      case (6):
        return float6;
      case (7):
        return float7;
      case (8):
        return float8;
      case (9):
        return float9;
      case (10):
        return float10;
      case (11):
        return float11;
      case (12):
        return float12;
      case (13):
        return float13;
      case (14):
        return float14;
      case (15):
        return float15;
      case (16):
        return float16;
      case (17):
        return float17;
      case (18):
        return float18;
      case (19):
        return float19;
      case (20):
        return float20;
      case (21):
        return float21;
      case (22):
        return float22;
      case (23):
        return float23;
      case (24):
        return float24;
      case (25):
        return float25;
      case (26):
        return float26;
      case (27):
        return float27;
      case (28):
        return float28;
      case (29):
        return float29;
      case (30):
        return float30;
      case (31):
        return float31;
      case (32):
        return float32;
      case (33):
        return float33;
      case (34):
        return float34;
      case (35):
        return float35;
      case (36):
        return float36;
      case (37):
        return float37;
      case (38):
        return float38;
      case (39):
        return float39;
      case (40):
        return float40;
      case (41):
        return float41;
      case (42):
        return float42;
      case (43):
        return float43;
      case (44):
        return float44;
      case (45):
        return float45;
      case (46):
        return float46;
      case (47):
        return float47;
      case (48):
        return float48;
      case (49):
        return float49;
      case (50):
        return float50;
      case (51):
        return float51;
      case (52):
        return float52;
      case (53):
        return float53;
      case (54):
        return float54;
      case (55):
        return float55;
      case (56):
        return float56;
      case (57):
        return float57;
      case (58):
        return float58;
      case (59):
        return float59;
      case (60):
        return float60;
      case (61):
        return float61;
      case (62):
        return float62;
      case (63):
        return float63;
      case (64):
        return float64;
      case (65):
        return float65;
      case (66):
        return float66;
      case (67):
        return float67;
      case (68):
        return float68;
      case (69):
        return float69;
      case (70):
        return float70;
      case (71):
        return float71;
      case (72):
        return float72;
      case (73):
        return float73;
      case (74):
        return float74;
      case (75):
        return float75;
      case (76):
        return float76;
      case (77):
        return float77;
      case (78):
        return float78;
      case (79):
        return float79;
      case (80):
        return float80;
      case (81):
        return float81;
      case (82):
        return float82;
      case (83):
        return float83;
      case (84):
        return float84;
      case (85):
        return float85;
      case (86):
        return float86;
      case (87):
        return float87;
      case (88):
        return float88;
      case (89):
        return float89;
      case (90):
        return float90;
      case (91):
        return float91;
      case (92):
        return float92;
      case (93):
        return float93;
      case (94):
        return float94;
      case (95):
        return float95;
      case (96):
        return float96;
      case (97):
        return float97;
      case (98):
        return float98;
      case (99):
        return float99;
      case (100):
        return float100;
      case (101):
        return float101;
      case (102):
        return float102;
      case (103):
        return float103;
      case (104):
        return float104;
      case (105):
        return float105;
      case (106):
        return float106;
      case (107):
        return float107;
      case (108):
        return float108;
      case (109):
        return float109;
      case (110):
        return float110;
      case (111):
        return float111;
      case (112):
        return float112;
      case (113):
        return float113;
      case (114):
        return float114;
      case (115):
        return float115;
      case (116):
        return float116;
      case (117):
        return float117;
      case (118):
        return float118;
      case (119):
        return float119;
      case (120):
        return float120;
      case (121):
        return float121;
      case (122):
        return float122;
      case (123):
        return float123;
      case (124):
        return float124;
      case (125):
        return float125;
      case (126):
        return float126;
      case (127):
        return float127;
      case (128):
        return float128;
      case (129):
        return float129;
      case (130):
        return float130;
      case (131):
        return float131;
      case (132):
        return float132;
      case (133):
        return float133;
      case (134):
        return float134;
      case (135):
        return float135;
      case (136):
        return float136;
      case (137):
        return float137;
      case (138):
        return float138;
      case (139):
        return float139;
      case (140):
        return float140;
      case (141):
        return float141;
      case (142):
        return float142;
      case (143):
        return float143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, float value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        float0 = value;
        break;
      case (1):
        float1 = value;
        break;
      case (2):
        float2 = value;
        break;
      case (3):
        float3 = value;
        break;
      case (4):
        float4 = value;
        break;
      case (5):
        float5 = value;
        break;
      case (6):
        float6 = value;
        break;
      case (7):
        float7 = value;
        break;
      case (8):
        float8 = value;
        break;
      case (9):
        float9 = value;
        break;
      case (10):
        float10 = value;
        break;
      case (11):
        float11 = value;
        break;
      case (12):
        float12 = value;
        break;
      case (13):
        float13 = value;
        break;
      case (14):
        float14 = value;
        break;
      case (16):
        float16 = value;
        break;
      case (17):
        float17 = value;
        break;
      case (18):
        float18 = value;
        break;
      case (19):
        float19 = value;
        break;
      case (20):
        float20 = value;
        break;
      case (21):
        float21 = value;
        break;
      case (22):
        float22 = value;
        break;
      case (23):
        float23 = value;
        break;
      case (24):
        float24 = value;
        break;
      case (26):
        float26 = value;
        break;
      case (28):
        float28 = value;
        break;
      case (29):
        float29 = value;
        break;
      case (30):
        float30 = value;
        break;
      case (31):
        float31 = value;
        break;
      case (32):
        float32 = value;
        break;
      case (33):
        float33 = value;
        break;
      case (35):
        float35 = value;
        break;
      case (36):
        float36 = value;
        break;
      case (37):
        float37 = value;
        break;
      case (38):
        float38 = value;
        break;
      case (39):
        float39 = value;
        break;
      case (40):
        float40 = value;
        break;
      case (41):
        float41 = value;
        break;
      case (42):
        float42 = value;
        break;
      case (43):
        float43 = value;
        break;
      case (44):
        float44 = value;
        break;
      case (45):
        float45 = value;
        break;
      case (46):
        float46 = value;
        break;
      case (47):
        float47 = value;
        break;
      case (48):
        float48 = value;
        break;
      case (49):
        float49 = value;
        break;
      case (50):
        float50 = value;
        break;
      case (52):
        float52 = value;
        break;
      case (53):
        float53 = value;
        break;
      case (54):
        float54 = value;
        break;
      case (55):
        float55 = value;
        break;
      case (56):
        float56 = value;
        break;
      case (57):
        float57 = value;
        break;
      case (58):
        float58 = value;
        break;
      case (59):
        float59 = value;
        break;
      case (60):
        float60 = value;
        break;
      case (62):
        float62 = value;
        break;
      case (64):
        float64 = value;
        break;
      case (65):
        float65 = value;
        break;
      case (66):
        float66 = value;
        break;
      case (67):
        float67 = value;
        break;
      case (68):
        float68 = value;
        break;
      case (69):
        float69 = value;
        break;
      case (71):
        float71 = value;
        break;
      case (72):
        float72 = value;
        break;
      case (73):
        float73 = value;
        break;
      case (74):
        float74 = value;
        break;
      case (75):
        float75 = value;
        break;
      case (76):
        float76 = value;
        break;
      case (77):
        float77 = value;
        break;
      case (78):
        float78 = value;
        break;
      case (79):
        float79 = value;
        break;
      case (80):
        float80 = value;
        break;
      case (81):
        float81 = value;
        break;
      case (82):
        float82 = value;
        break;
      case (83):
        float83 = value;
        break;
      case (84):
        float84 = value;
        break;
      case (85):
        float85 = value;
        break;
      case (86):
        float86 = value;
        break;
      case (88):
        float88 = value;
        break;
      case (89):
        float89 = value;
        break;
      case (90):
        float90 = value;
        break;
      case (91):
        float91 = value;
        break;
      case (92):
        float92 = value;
        break;
      case (93):
        float93 = value;
        break;
      case (94):
        float94 = value;
        break;
      case (95):
        float95 = value;
        break;
      case (96):
        float96 = value;
        break;
      case (98):
        float98 = value;
        break;
      case (100):
        float100 = value;
        break;
      case (101):
        float101 = value;
        break;
      case (102):
        float102 = value;
        break;
      case (103):
        float103 = value;
        break;
      case (104):
        float104 = value;
        break;
      case (105):
        float105 = value;
        break;
      case (107):
        float107 = value;
        break;
      case (108):
        float108 = value;
        break;
      case (109):
        float109 = value;
        break;
      case (110):
        float110 = value;
        break;
      case (111):
        float111 = value;
        break;
      case (112):
        float112 = value;
        break;
      case (113):
        float113 = value;
        break;
      case (114):
        float114 = value;
        break;
      case (115):
        float115 = value;
        break;
      case (116):
        float116 = value;
        break;
      case (117):
        float117 = value;
        break;
      case (118):
        float118 = value;
        break;
      case (119):
        float119 = value;
        break;
      case (120):
        float120 = value;
        break;
      case (121):
        float121 = value;
        break;
      case (122):
        float122 = value;
        break;
      case (124):
        float124 = value;
        break;
      case (125):
        float125 = value;
        break;
      case (126):
        float126 = value;
        break;
      case (127):
        float127 = value;
        break;
      case (128):
        float128 = value;
        break;
      case (129):
        float129 = value;
        break;
      case (130):
        float130 = value;
        break;
      case (131):
        float131 = value;
        break;
      case (132):
        float132 = value;
        break;
      case (134):
        float134 = value;
        break;
      case (136):
        float136 = value;
        break;
      case (137):
        float137 = value;
        break;
      case (138):
        float138 = value;
        break;
      case (139):
        float139 = value;
        break;
      case (140):
        float140 = value;
        break;
      case (141):
        float141 = value;
        break;
      case (143):
        float143 = 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);
    }
  }
}
