/*
 * 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 FieldsOfSimpleInterface {
  public int identifier;
  private SimpleInterface SimpleInterface0;
  private SimpleInterface SimpleInterface1;
  private SimpleInterface SimpleInterface2;
  private SimpleInterface SimpleInterface3;
  private SimpleInterface SimpleInterface4;
  private SimpleInterface SimpleInterface5;
  private SimpleInterface SimpleInterface6;
  private SimpleInterface SimpleInterface7;
  private static SimpleInterface SimpleInterface8;
  private transient SimpleInterface SimpleInterface9;
  private transient SimpleInterface SimpleInterface10;
  private transient SimpleInterface SimpleInterface11;
  private transient SimpleInterface SimpleInterface12;
  private transient SimpleInterface SimpleInterface13;
  private transient SimpleInterface SimpleInterface14;
  private final SimpleInterface SimpleInterface15 = new SimpleClass();
  private volatile SimpleInterface SimpleInterface16;
  private volatile SimpleInterface SimpleInterface17;
  private volatile SimpleInterface SimpleInterface18;
  private volatile SimpleInterface SimpleInterface19;
  private volatile SimpleInterface SimpleInterface20;
  private volatile SimpleInterface SimpleInterface21;
  private volatile SimpleInterface SimpleInterface22;
  private volatile SimpleInterface SimpleInterface23;
  private static transient SimpleInterface SimpleInterface24;
  private static final SimpleInterface SimpleInterface25 = new SimpleClass();
  private static volatile SimpleInterface SimpleInterface26;
  private final transient SimpleInterface SimpleInterface27 = new SimpleClass();
  private transient volatile SimpleInterface SimpleInterface28;
  private transient volatile SimpleInterface SimpleInterface29;
  private transient volatile SimpleInterface SimpleInterface30;
  private transient volatile SimpleInterface SimpleInterface31;
  private transient volatile SimpleInterface SimpleInterface32;
  private transient volatile SimpleInterface SimpleInterface33;
  private static final transient SimpleInterface SimpleInterface34 = new SimpleClass();
  private static transient volatile SimpleInterface SimpleInterface35;
  public SimpleInterface SimpleInterface36;
  public SimpleInterface SimpleInterface37;
  public SimpleInterface SimpleInterface38;
  public SimpleInterface SimpleInterface39;
  public SimpleInterface SimpleInterface40;
  public SimpleInterface SimpleInterface41;
  public SimpleInterface SimpleInterface42;
  public SimpleInterface SimpleInterface43;
  public static SimpleInterface SimpleInterface44;
  public transient SimpleInterface SimpleInterface45;
  public transient SimpleInterface SimpleInterface46;
  public transient SimpleInterface SimpleInterface47;
  public transient SimpleInterface SimpleInterface48;
  public transient SimpleInterface SimpleInterface49;
  public transient SimpleInterface SimpleInterface50;
  public final SimpleInterface SimpleInterface51 = new SimpleClass();
  public volatile SimpleInterface SimpleInterface52;
  public volatile SimpleInterface SimpleInterface53;
  public volatile SimpleInterface SimpleInterface54;
  public volatile SimpleInterface SimpleInterface55;
  public volatile SimpleInterface SimpleInterface56;
  public volatile SimpleInterface SimpleInterface57;
  public volatile SimpleInterface SimpleInterface58;
  public volatile SimpleInterface SimpleInterface59;
  public static transient SimpleInterface SimpleInterface60;
  public static final SimpleInterface SimpleInterface61 = new SimpleClass();
  public static volatile SimpleInterface SimpleInterface62;
  public final transient SimpleInterface SimpleInterface63 = new SimpleClass();
  public transient volatile SimpleInterface SimpleInterface64;
  public transient volatile SimpleInterface SimpleInterface65;
  public transient volatile SimpleInterface SimpleInterface66;
  public transient volatile SimpleInterface SimpleInterface67;
  public transient volatile SimpleInterface SimpleInterface68;
  public transient volatile SimpleInterface SimpleInterface69;
  public static final transient SimpleInterface SimpleInterface70 = new SimpleClass();
  public static transient volatile SimpleInterface SimpleInterface71;
  protected SimpleInterface SimpleInterface72;
  protected SimpleInterface SimpleInterface73;
  protected SimpleInterface SimpleInterface74;
  protected SimpleInterface SimpleInterface75;
  protected SimpleInterface SimpleInterface76;
  protected SimpleInterface SimpleInterface77;
  protected SimpleInterface SimpleInterface78;
  protected SimpleInterface SimpleInterface79;
  protected static SimpleInterface SimpleInterface80;
  protected transient SimpleInterface SimpleInterface81;
  protected transient SimpleInterface SimpleInterface82;
  protected transient SimpleInterface SimpleInterface83;
  protected transient SimpleInterface SimpleInterface84;
  protected transient SimpleInterface SimpleInterface85;
  protected transient SimpleInterface SimpleInterface86;
  protected final SimpleInterface SimpleInterface87 = new SimpleClass();
  protected volatile SimpleInterface SimpleInterface88;
  protected volatile SimpleInterface SimpleInterface89;
  protected volatile SimpleInterface SimpleInterface90;
  protected volatile SimpleInterface SimpleInterface91;
  protected volatile SimpleInterface SimpleInterface92;
  protected volatile SimpleInterface SimpleInterface93;
  protected volatile SimpleInterface SimpleInterface94;
  protected volatile SimpleInterface SimpleInterface95;
  protected static transient SimpleInterface SimpleInterface96;
  protected static final SimpleInterface SimpleInterface97 = new SimpleClass();
  protected static volatile SimpleInterface SimpleInterface98;
  protected final transient SimpleInterface SimpleInterface99 = new SimpleClass();
  protected transient volatile SimpleInterface SimpleInterface100;
  protected transient volatile SimpleInterface SimpleInterface101;
  protected transient volatile SimpleInterface SimpleInterface102;
  protected transient volatile SimpleInterface SimpleInterface103;
  protected transient volatile SimpleInterface SimpleInterface104;
  protected transient volatile SimpleInterface SimpleInterface105;
  protected static final transient SimpleInterface SimpleInterface106 = new SimpleClass();
  protected static transient volatile SimpleInterface SimpleInterface107;
  SimpleInterface SimpleInterface108;
  SimpleInterface SimpleInterface109;
  SimpleInterface SimpleInterface110;
  SimpleInterface SimpleInterface111;
  SimpleInterface SimpleInterface112;
  SimpleInterface SimpleInterface113;
  SimpleInterface SimpleInterface114;
  SimpleInterface SimpleInterface115;
  static SimpleInterface SimpleInterface116;
  transient SimpleInterface SimpleInterface117;
  transient SimpleInterface SimpleInterface118;
  transient SimpleInterface SimpleInterface119;
  transient SimpleInterface SimpleInterface120;
  transient SimpleInterface SimpleInterface121;
  transient SimpleInterface SimpleInterface122;
  final SimpleInterface SimpleInterface123 = new SimpleClass();
  volatile SimpleInterface SimpleInterface124;
  volatile SimpleInterface SimpleInterface125;
  volatile SimpleInterface SimpleInterface126;
  volatile SimpleInterface SimpleInterface127;
  volatile SimpleInterface SimpleInterface128;
  volatile SimpleInterface SimpleInterface129;
  volatile SimpleInterface SimpleInterface130;
  volatile SimpleInterface SimpleInterface131;
  static transient SimpleInterface SimpleInterface132;
  static final SimpleInterface SimpleInterface133 = new SimpleClass();
  static volatile SimpleInterface SimpleInterface134;
  final transient SimpleInterface SimpleInterface135 = new SimpleClass();
  transient volatile SimpleInterface SimpleInterface136;
  transient volatile SimpleInterface SimpleInterface137;
  transient volatile SimpleInterface SimpleInterface138;
  transient volatile SimpleInterface SimpleInterface139;
  transient volatile SimpleInterface SimpleInterface140;
  transient volatile SimpleInterface SimpleInterface141;
  static final transient SimpleInterface SimpleInterface142 = new SimpleClass();
  static transient volatile SimpleInterface SimpleInterface143;

  public static final boolean[] isPersistent = {
    false, true, true, false, true, true, true, false, false, false,
    false, true, true, true, false, false, false, true, true, false,
    true, true, true, false, false, false, false, false, false, false,
    true, true, true, false, false, false, false, true, true, false,
    true, true, true, false, false, false, false, true, true, true,
    false, false, false, true, true, false, true, true, true, false,
    false, false, false, false, false, false, true, true, true, false,
    false, false, false, true, true, false, true, true, true, false,
    false, false, false, true, true, true, false, false, false, true,
    true, false, true, true, true, false, false, false, false, false,
    false, false, true, true, true, false, false, false, false, true,
    true, false, true, true, true, false, false, false, false, true,
    true, true, false, false, false, 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 SimpleInterface SimpleInterface0",
    "serialized= true   private SimpleInterface SimpleInterface1",
    "embedded= false   private SimpleInterface SimpleInterface2",
    "persistence-modifier= none    private SimpleInterface SimpleInterface3",
    "persistence-modifier= persistent    private SimpleInterface SimpleInterface4",
    "persistence-modifier= persistent  serialized= true   private SimpleInterface SimpleInterface5",
    "persistence-modifier= persistent  embedded= false   private SimpleInterface SimpleInterface6",
    "persistence-modifier= transactional    private SimpleInterface SimpleInterface7",
    "private static SimpleInterface SimpleInterface8",
    "private transient SimpleInterface SimpleInterface9",
    "persistence-modifier= none    private transient SimpleInterface SimpleInterface10",
    "persistence-modifier= persistent    private transient SimpleInterface SimpleInterface11",
    "persistence-modifier= persistent  serialized= true   private transient SimpleInterface SimpleInterface12",
    "persistence-modifier= persistent  embedded= false   private transient SimpleInterface SimpleInterface13",
    "persistence-modifier= transactional    private transient SimpleInterface SimpleInterface14",
    "private final SimpleInterface SimpleInterface15",
    "private volatile SimpleInterface SimpleInterface16",
    "serialized= true   private volatile SimpleInterface SimpleInterface17",
    "embedded= false   private volatile SimpleInterface SimpleInterface18",
    "persistence-modifier= none    private volatile SimpleInterface SimpleInterface19",
    "persistence-modifier= persistent    private volatile SimpleInterface SimpleInterface20",
    "persistence-modifier= persistent  serialized= true   private volatile SimpleInterface SimpleInterface21",
    "persistence-modifier= persistent  embedded= false   private volatile SimpleInterface SimpleInterface22",
    "persistence-modifier= transactional    private volatile SimpleInterface SimpleInterface23",
    "private static transient SimpleInterface SimpleInterface24",
    "private static final SimpleInterface SimpleInterface25",
    "private static volatile SimpleInterface SimpleInterface26",
    "private transient final SimpleInterface SimpleInterface27",
    "private transient volatile SimpleInterface SimpleInterface28",
    "persistence-modifier= none    private transient volatile SimpleInterface SimpleInterface29",
    "persistence-modifier= persistent    private transient volatile SimpleInterface SimpleInterface30",
    "persistence-modifier= persistent  serialized= true   private transient volatile SimpleInterface SimpleInterface31",
    "persistence-modifier= persistent  embedded= false   private transient volatile SimpleInterface SimpleInterface32",
    "persistence-modifier= transactional    private transient volatile SimpleInterface SimpleInterface33",
    "private static transient final SimpleInterface SimpleInterface34",
    "private static transient volatile SimpleInterface SimpleInterface35",
    "public SimpleInterface SimpleInterface36",
    "serialized= true   public SimpleInterface SimpleInterface37",
    "embedded= false   public SimpleInterface SimpleInterface38",
    "persistence-modifier= none    public SimpleInterface SimpleInterface39",
    "persistence-modifier= persistent    public SimpleInterface SimpleInterface40",
    "persistence-modifier= persistent  serialized= true   public SimpleInterface SimpleInterface41",
    "persistence-modifier= persistent  embedded= false   public SimpleInterface SimpleInterface42",
    "persistence-modifier= transactional    public SimpleInterface SimpleInterface43",
    "public static SimpleInterface SimpleInterface44",
    "public transient SimpleInterface SimpleInterface45",
    "persistence-modifier= none    public transient SimpleInterface SimpleInterface46",
    "persistence-modifier= persistent    public transient SimpleInterface SimpleInterface47",
    "persistence-modifier= persistent  serialized= true   public transient SimpleInterface SimpleInterface48",
    "persistence-modifier= persistent  embedded= false   public transient SimpleInterface SimpleInterface49",
    "persistence-modifier= transactional    public transient SimpleInterface SimpleInterface50",
    "public final SimpleInterface SimpleInterface51",
    "public volatile SimpleInterface SimpleInterface52",
    "serialized= true   public volatile SimpleInterface SimpleInterface53",
    "embedded= false   public volatile SimpleInterface SimpleInterface54",
    "persistence-modifier= none    public volatile SimpleInterface SimpleInterface55",
    "persistence-modifier= persistent    public volatile SimpleInterface SimpleInterface56",
    "persistence-modifier= persistent  serialized= true   public volatile SimpleInterface SimpleInterface57",
    "persistence-modifier= persistent  embedded= false   public volatile SimpleInterface SimpleInterface58",
    "persistence-modifier= transactional    public volatile SimpleInterface SimpleInterface59",
    "public static transient SimpleInterface SimpleInterface60",
    "public static final SimpleInterface SimpleInterface61",
    "public static volatile SimpleInterface SimpleInterface62",
    "public transient final SimpleInterface SimpleInterface63",
    "public transient volatile SimpleInterface SimpleInterface64",
    "persistence-modifier= none    public transient volatile SimpleInterface SimpleInterface65",
    "persistence-modifier= persistent    public transient volatile SimpleInterface SimpleInterface66",
    "persistence-modifier= persistent  serialized= true   public transient volatile SimpleInterface SimpleInterface67",
    "persistence-modifier= persistent  embedded= false   public transient volatile SimpleInterface SimpleInterface68",
    "persistence-modifier= transactional    public transient volatile SimpleInterface SimpleInterface69",
    "public static transient final SimpleInterface SimpleInterface70",
    "public static transient volatile SimpleInterface SimpleInterface71",
    "protected SimpleInterface SimpleInterface72",
    "serialized= true   protected SimpleInterface SimpleInterface73",
    "embedded= false   protected SimpleInterface SimpleInterface74",
    "persistence-modifier= none    protected SimpleInterface SimpleInterface75",
    "persistence-modifier= persistent    protected SimpleInterface SimpleInterface76",
    "persistence-modifier= persistent  serialized= true   protected SimpleInterface SimpleInterface77",
    "persistence-modifier= persistent  embedded= false   protected SimpleInterface SimpleInterface78",
    "persistence-modifier= transactional    protected SimpleInterface SimpleInterface79",
    "protected static SimpleInterface SimpleInterface80",
    "protected transient SimpleInterface SimpleInterface81",
    "persistence-modifier= none    protected transient SimpleInterface SimpleInterface82",
    "persistence-modifier= persistent    protected transient SimpleInterface SimpleInterface83",
    "persistence-modifier= persistent  serialized= true   protected transient SimpleInterface SimpleInterface84",
    "persistence-modifier= persistent  embedded= false   protected transient SimpleInterface SimpleInterface85",
    "persistence-modifier= transactional    protected transient SimpleInterface SimpleInterface86",
    "protected final SimpleInterface SimpleInterface87",
    "protected volatile SimpleInterface SimpleInterface88",
    "serialized= true   protected volatile SimpleInterface SimpleInterface89",
    "embedded= false   protected volatile SimpleInterface SimpleInterface90",
    "persistence-modifier= none    protected volatile SimpleInterface SimpleInterface91",
    "persistence-modifier= persistent    protected volatile SimpleInterface SimpleInterface92",
    "persistence-modifier= persistent  serialized= true   protected volatile SimpleInterface SimpleInterface93",
    "persistence-modifier= persistent  embedded= false   protected volatile SimpleInterface SimpleInterface94",
    "persistence-modifier= transactional    protected volatile SimpleInterface SimpleInterface95",
    "protected static transient SimpleInterface SimpleInterface96",
    "protected static final SimpleInterface SimpleInterface97",
    "protected static volatile SimpleInterface SimpleInterface98",
    "protected transient final SimpleInterface SimpleInterface99",
    "protected transient volatile SimpleInterface SimpleInterface100",
    "persistence-modifier= none    protected transient volatile SimpleInterface SimpleInterface101",
    "persistence-modifier= persistent    protected transient volatile SimpleInterface SimpleInterface102",
    "persistence-modifier= persistent  serialized= true   protected transient volatile SimpleInterface SimpleInterface103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile SimpleInterface SimpleInterface104",
    "persistence-modifier= transactional    protected transient volatile SimpleInterface SimpleInterface105",
    "protected static transient final SimpleInterface SimpleInterface106",
    "protected static transient volatile SimpleInterface SimpleInterface107",
    "SimpleInterface SimpleInterface108",
    "serialized= true   SimpleInterface SimpleInterface109",
    "embedded= false   SimpleInterface SimpleInterface110",
    "persistence-modifier= none    SimpleInterface SimpleInterface111",
    "persistence-modifier= persistent    SimpleInterface SimpleInterface112",
    "persistence-modifier= persistent  serialized= true   SimpleInterface SimpleInterface113",
    "persistence-modifier= persistent  embedded= false   SimpleInterface SimpleInterface114",
    "persistence-modifier= transactional    SimpleInterface SimpleInterface115",
    "static SimpleInterface SimpleInterface116",
    "transient SimpleInterface SimpleInterface117",
    "persistence-modifier= none    transient SimpleInterface SimpleInterface118",
    "persistence-modifier= persistent    transient SimpleInterface SimpleInterface119",
    "persistence-modifier= persistent  serialized= true   transient SimpleInterface SimpleInterface120",
    "persistence-modifier= persistent  embedded= false   transient SimpleInterface SimpleInterface121",
    "persistence-modifier= transactional    transient SimpleInterface SimpleInterface122",
    "final SimpleInterface SimpleInterface123",
    "volatile SimpleInterface SimpleInterface124",
    "serialized= true   volatile SimpleInterface SimpleInterface125",
    "embedded= false   volatile SimpleInterface SimpleInterface126",
    "persistence-modifier= none    volatile SimpleInterface SimpleInterface127",
    "persistence-modifier= persistent    volatile SimpleInterface SimpleInterface128",
    "persistence-modifier= persistent  serialized= true   volatile SimpleInterface SimpleInterface129",
    "persistence-modifier= persistent  embedded= false   volatile SimpleInterface SimpleInterface130",
    "persistence-modifier= transactional    volatile SimpleInterface SimpleInterface131",
    "static transient SimpleInterface SimpleInterface132",
    "static final SimpleInterface SimpleInterface133",
    "static volatile SimpleInterface SimpleInterface134",
    "transient final SimpleInterface SimpleInterface135",
    "transient volatile SimpleInterface SimpleInterface136",
    "persistence-modifier= none    transient volatile SimpleInterface SimpleInterface137",
    "persistence-modifier= persistent    transient volatile SimpleInterface SimpleInterface138",
    "persistence-modifier= persistent  serialized= true   transient volatile SimpleInterface SimpleInterface139",
    "persistence-modifier= persistent  embedded= false   transient volatile SimpleInterface SimpleInterface140",
    "persistence-modifier= transactional    transient volatile SimpleInterface SimpleInterface141",
    "static transient final SimpleInterface SimpleInterface142",
    "static transient volatile SimpleInterface SimpleInterface143"
  };

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

  public SimpleInterface get(int index) {
    switch (index) {
      case (0):
        return SimpleInterface0;
      case (1):
        return SimpleInterface1;
      case (2):
        return SimpleInterface2;
      case (3):
        return SimpleInterface3;
      case (4):
        return SimpleInterface4;
      case (5):
        return SimpleInterface5;
      case (6):
        return SimpleInterface6;
      case (7):
        return SimpleInterface7;
      case (8):
        return SimpleInterface8;
      case (9):
        return SimpleInterface9;
      case (10):
        return SimpleInterface10;
      case (11):
        return SimpleInterface11;
      case (12):
        return SimpleInterface12;
      case (13):
        return SimpleInterface13;
      case (14):
        return SimpleInterface14;
      case (15):
        return SimpleInterface15;
      case (16):
        return SimpleInterface16;
      case (17):
        return SimpleInterface17;
      case (18):
        return SimpleInterface18;
      case (19):
        return SimpleInterface19;
      case (20):
        return SimpleInterface20;
      case (21):
        return SimpleInterface21;
      case (22):
        return SimpleInterface22;
      case (23):
        return SimpleInterface23;
      case (24):
        return SimpleInterface24;
      case (25):
        return SimpleInterface25;
      case (26):
        return SimpleInterface26;
      case (27):
        return SimpleInterface27;
      case (28):
        return SimpleInterface28;
      case (29):
        return SimpleInterface29;
      case (30):
        return SimpleInterface30;
      case (31):
        return SimpleInterface31;
      case (32):
        return SimpleInterface32;
      case (33):
        return SimpleInterface33;
      case (34):
        return SimpleInterface34;
      case (35):
        return SimpleInterface35;
      case (36):
        return SimpleInterface36;
      case (37):
        return SimpleInterface37;
      case (38):
        return SimpleInterface38;
      case (39):
        return SimpleInterface39;
      case (40):
        return SimpleInterface40;
      case (41):
        return SimpleInterface41;
      case (42):
        return SimpleInterface42;
      case (43):
        return SimpleInterface43;
      case (44):
        return SimpleInterface44;
      case (45):
        return SimpleInterface45;
      case (46):
        return SimpleInterface46;
      case (47):
        return SimpleInterface47;
      case (48):
        return SimpleInterface48;
      case (49):
        return SimpleInterface49;
      case (50):
        return SimpleInterface50;
      case (51):
        return SimpleInterface51;
      case (52):
        return SimpleInterface52;
      case (53):
        return SimpleInterface53;
      case (54):
        return SimpleInterface54;
      case (55):
        return SimpleInterface55;
      case (56):
        return SimpleInterface56;
      case (57):
        return SimpleInterface57;
      case (58):
        return SimpleInterface58;
      case (59):
        return SimpleInterface59;
      case (60):
        return SimpleInterface60;
      case (61):
        return SimpleInterface61;
      case (62):
        return SimpleInterface62;
      case (63):
        return SimpleInterface63;
      case (64):
        return SimpleInterface64;
      case (65):
        return SimpleInterface65;
      case (66):
        return SimpleInterface66;
      case (67):
        return SimpleInterface67;
      case (68):
        return SimpleInterface68;
      case (69):
        return SimpleInterface69;
      case (70):
        return SimpleInterface70;
      case (71):
        return SimpleInterface71;
      case (72):
        return SimpleInterface72;
      case (73):
        return SimpleInterface73;
      case (74):
        return SimpleInterface74;
      case (75):
        return SimpleInterface75;
      case (76):
        return SimpleInterface76;
      case (77):
        return SimpleInterface77;
      case (78):
        return SimpleInterface78;
      case (79):
        return SimpleInterface79;
      case (80):
        return SimpleInterface80;
      case (81):
        return SimpleInterface81;
      case (82):
        return SimpleInterface82;
      case (83):
        return SimpleInterface83;
      case (84):
        return SimpleInterface84;
      case (85):
        return SimpleInterface85;
      case (86):
        return SimpleInterface86;
      case (87):
        return SimpleInterface87;
      case (88):
        return SimpleInterface88;
      case (89):
        return SimpleInterface89;
      case (90):
        return SimpleInterface90;
      case (91):
        return SimpleInterface91;
      case (92):
        return SimpleInterface92;
      case (93):
        return SimpleInterface93;
      case (94):
        return SimpleInterface94;
      case (95):
        return SimpleInterface95;
      case (96):
        return SimpleInterface96;
      case (97):
        return SimpleInterface97;
      case (98):
        return SimpleInterface98;
      case (99):
        return SimpleInterface99;
      case (100):
        return SimpleInterface100;
      case (101):
        return SimpleInterface101;
      case (102):
        return SimpleInterface102;
      case (103):
        return SimpleInterface103;
      case (104):
        return SimpleInterface104;
      case (105):
        return SimpleInterface105;
      case (106):
        return SimpleInterface106;
      case (107):
        return SimpleInterface107;
      case (108):
        return SimpleInterface108;
      case (109):
        return SimpleInterface109;
      case (110):
        return SimpleInterface110;
      case (111):
        return SimpleInterface111;
      case (112):
        return SimpleInterface112;
      case (113):
        return SimpleInterface113;
      case (114):
        return SimpleInterface114;
      case (115):
        return SimpleInterface115;
      case (116):
        return SimpleInterface116;
      case (117):
        return SimpleInterface117;
      case (118):
        return SimpleInterface118;
      case (119):
        return SimpleInterface119;
      case (120):
        return SimpleInterface120;
      case (121):
        return SimpleInterface121;
      case (122):
        return SimpleInterface122;
      case (123):
        return SimpleInterface123;
      case (124):
        return SimpleInterface124;
      case (125):
        return SimpleInterface125;
      case (126):
        return SimpleInterface126;
      case (127):
        return SimpleInterface127;
      case (128):
        return SimpleInterface128;
      case (129):
        return SimpleInterface129;
      case (130):
        return SimpleInterface130;
      case (131):
        return SimpleInterface131;
      case (132):
        return SimpleInterface132;
      case (133):
        return SimpleInterface133;
      case (134):
        return SimpleInterface134;
      case (135):
        return SimpleInterface135;
      case (136):
        return SimpleInterface136;
      case (137):
        return SimpleInterface137;
      case (138):
        return SimpleInterface138;
      case (139):
        return SimpleInterface139;
      case (140):
        return SimpleInterface140;
      case (141):
        return SimpleInterface141;
      case (142):
        return SimpleInterface142;
      case (143):
        return SimpleInterface143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, SimpleInterface value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        SimpleInterface0 = value;
        break;
      case (1):
        SimpleInterface1 = value;
        break;
      case (2):
        SimpleInterface2 = value;
        break;
      case (3):
        SimpleInterface3 = value;
        break;
      case (4):
        SimpleInterface4 = value;
        break;
      case (5):
        SimpleInterface5 = value;
        break;
      case (6):
        SimpleInterface6 = value;
        break;
      case (7):
        SimpleInterface7 = value;
        break;
      case (8):
        SimpleInterface8 = value;
        break;
      case (9):
        SimpleInterface9 = value;
        break;
      case (10):
        SimpleInterface10 = value;
        break;
      case (11):
        SimpleInterface11 = value;
        break;
      case (12):
        SimpleInterface12 = value;
        break;
      case (13):
        SimpleInterface13 = value;
        break;
      case (14):
        SimpleInterface14 = value;
        break;
      case (16):
        SimpleInterface16 = value;
        break;
      case (17):
        SimpleInterface17 = value;
        break;
      case (18):
        SimpleInterface18 = value;
        break;
      case (19):
        SimpleInterface19 = value;
        break;
      case (20):
        SimpleInterface20 = value;
        break;
      case (21):
        SimpleInterface21 = value;
        break;
      case (22):
        SimpleInterface22 = value;
        break;
      case (23):
        SimpleInterface23 = value;
        break;
      case (24):
        SimpleInterface24 = value;
        break;
      case (26):
        SimpleInterface26 = value;
        break;
      case (28):
        SimpleInterface28 = value;
        break;
      case (29):
        SimpleInterface29 = value;
        break;
      case (30):
        SimpleInterface30 = value;
        break;
      case (31):
        SimpleInterface31 = value;
        break;
      case (32):
        SimpleInterface32 = value;
        break;
      case (33):
        SimpleInterface33 = value;
        break;
      case (35):
        SimpleInterface35 = value;
        break;
      case (36):
        SimpleInterface36 = value;
        break;
      case (37):
        SimpleInterface37 = value;
        break;
      case (38):
        SimpleInterface38 = value;
        break;
      case (39):
        SimpleInterface39 = value;
        break;
      case (40):
        SimpleInterface40 = value;
        break;
      case (41):
        SimpleInterface41 = value;
        break;
      case (42):
        SimpleInterface42 = value;
        break;
      case (43):
        SimpleInterface43 = value;
        break;
      case (44):
        SimpleInterface44 = value;
        break;
      case (45):
        SimpleInterface45 = value;
        break;
      case (46):
        SimpleInterface46 = value;
        break;
      case (47):
        SimpleInterface47 = value;
        break;
      case (48):
        SimpleInterface48 = value;
        break;
      case (49):
        SimpleInterface49 = value;
        break;
      case (50):
        SimpleInterface50 = value;
        break;
      case (52):
        SimpleInterface52 = value;
        break;
      case (53):
        SimpleInterface53 = value;
        break;
      case (54):
        SimpleInterface54 = value;
        break;
      case (55):
        SimpleInterface55 = value;
        break;
      case (56):
        SimpleInterface56 = value;
        break;
      case (57):
        SimpleInterface57 = value;
        break;
      case (58):
        SimpleInterface58 = value;
        break;
      case (59):
        SimpleInterface59 = value;
        break;
      case (60):
        SimpleInterface60 = value;
        break;
      case (62):
        SimpleInterface62 = value;
        break;
      case (64):
        SimpleInterface64 = value;
        break;
      case (65):
        SimpleInterface65 = value;
        break;
      case (66):
        SimpleInterface66 = value;
        break;
      case (67):
        SimpleInterface67 = value;
        break;
      case (68):
        SimpleInterface68 = value;
        break;
      case (69):
        SimpleInterface69 = value;
        break;
      case (71):
        SimpleInterface71 = value;
        break;
      case (72):
        SimpleInterface72 = value;
        break;
      case (73):
        SimpleInterface73 = value;
        break;
      case (74):
        SimpleInterface74 = value;
        break;
      case (75):
        SimpleInterface75 = value;
        break;
      case (76):
        SimpleInterface76 = value;
        break;
      case (77):
        SimpleInterface77 = value;
        break;
      case (78):
        SimpleInterface78 = value;
        break;
      case (79):
        SimpleInterface79 = value;
        break;
      case (80):
        SimpleInterface80 = value;
        break;
      case (81):
        SimpleInterface81 = value;
        break;
      case (82):
        SimpleInterface82 = value;
        break;
      case (83):
        SimpleInterface83 = value;
        break;
      case (84):
        SimpleInterface84 = value;
        break;
      case (85):
        SimpleInterface85 = value;
        break;
      case (86):
        SimpleInterface86 = value;
        break;
      case (88):
        SimpleInterface88 = value;
        break;
      case (89):
        SimpleInterface89 = value;
        break;
      case (90):
        SimpleInterface90 = value;
        break;
      case (91):
        SimpleInterface91 = value;
        break;
      case (92):
        SimpleInterface92 = value;
        break;
      case (93):
        SimpleInterface93 = value;
        break;
      case (94):
        SimpleInterface94 = value;
        break;
      case (95):
        SimpleInterface95 = value;
        break;
      case (96):
        SimpleInterface96 = value;
        break;
      case (98):
        SimpleInterface98 = value;
        break;
      case (100):
        SimpleInterface100 = value;
        break;
      case (101):
        SimpleInterface101 = value;
        break;
      case (102):
        SimpleInterface102 = value;
        break;
      case (103):
        SimpleInterface103 = value;
        break;
      case (104):
        SimpleInterface104 = value;
        break;
      case (105):
        SimpleInterface105 = value;
        break;
      case (107):
        SimpleInterface107 = value;
        break;
      case (108):
        SimpleInterface108 = value;
        break;
      case (109):
        SimpleInterface109 = value;
        break;
      case (110):
        SimpleInterface110 = value;
        break;
      case (111):
        SimpleInterface111 = value;
        break;
      case (112):
        SimpleInterface112 = value;
        break;
      case (113):
        SimpleInterface113 = value;
        break;
      case (114):
        SimpleInterface114 = value;
        break;
      case (115):
        SimpleInterface115 = value;
        break;
      case (116):
        SimpleInterface116 = value;
        break;
      case (117):
        SimpleInterface117 = value;
        break;
      case (118):
        SimpleInterface118 = value;
        break;
      case (119):
        SimpleInterface119 = value;
        break;
      case (120):
        SimpleInterface120 = value;
        break;
      case (121):
        SimpleInterface121 = value;
        break;
      case (122):
        SimpleInterface122 = value;
        break;
      case (124):
        SimpleInterface124 = value;
        break;
      case (125):
        SimpleInterface125 = value;
        break;
      case (126):
        SimpleInterface126 = value;
        break;
      case (127):
        SimpleInterface127 = value;
        break;
      case (128):
        SimpleInterface128 = value;
        break;
      case (129):
        SimpleInterface129 = value;
        break;
      case (130):
        SimpleInterface130 = value;
        break;
      case (131):
        SimpleInterface131 = value;
        break;
      case (132):
        SimpleInterface132 = value;
        break;
      case (134):
        SimpleInterface134 = value;
        break;
      case (136):
        SimpleInterface136 = value;
        break;
      case (137):
        SimpleInterface137 = value;
        break;
      case (138):
        SimpleInterface138 = value;
        break;
      case (139):
        SimpleInterface139 = value;
        break;
      case (140):
        SimpleInterface140 = value;
        break;
      case (141):
        SimpleInterface141 = value;
        break;
      case (143):
        SimpleInterface143 = 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);
    }
  }
}
