/*
 * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

// There's a duplicate LVTT entry below.

class DuplicateLVTT {
  0xCAFEBABE;
  0; // minor version
  52; // version
  [] { // Constant Pool
    ; // first element is empty
    Method #34 #68; // #1    
    double 0x3FF199999999999A;; // #2    
    float 0x3F99999A; // #4    
    long 0xFFFFFFFFCAFEBABE;; // #5    
    class #69; // #7    
    Method #7 #68; // #8    
    String #70; // #9    
    Method #7 #71; // #10    
    Field #72 #73; // #11    
    class #74; // #12    
    Method #12 #68; // #13    
    String #75; // #14    
    Method #12 #76; // #15    
    Method #12 #77; // #16    
    Method #12 #78; // #17    
    Method #79 #80; // #18    
    String #81; // #19    
    Method #12 #82; // #20    
    String #83; // #21    
    Method #12 #84; // #22    
    String #85; // #23    
    Method #12 #86; // #24    
    String #87; // #25    
    Method #12 #88; // #26    
    String #89; // #27    
    String #90; // #28    
    Method #12 #91; // #29    
    String #92; // #30    
    String #93; // #31    
    Method #12 #94; // #32    
    class #95; // #33    
    class #96; // #34    
    Utf8 "<init>"; // #35    
    Utf8 "()V"; // #36    
    Utf8 "Code"; // #37    
    Utf8 "LineNumberTable"; // #38    
    Utf8 "LocalVariableTable"; // #39    
    Utf8 "this"; // #40    
    Utf8 "LDuplicateLVTT;"; // #41    
    Utf8 "main"; // #42    
    Utf8 "([Ljava/lang/String;)V"; // #43    
    Utf8 "args"; // #44    
    Utf8 "[Ljava/lang/String;"; // #45    
    Utf8 "b"; // #46    
    Utf8 "Z"; // #47    
    Utf8 "by"; // #48    
    Utf8 "B"; // #49    
    Utf8 "c"; // #50    
    Utf8 "C"; // #51    
    Utf8 "d"; // #52    
    Utf8 "D"; // #53    
    Utf8 "f"; // #54    
    Utf8 "F"; // #55    
    Utf8 "i"; // #56    
    Utf8 "I"; // #57    
    Utf8 "l"; // #58    
    Utf8 "J"; // #59    
    Utf8 "s"; // #60    
    Utf8 "S"; // #61    
    Utf8 "list"; // #62    
    Utf8 "Ljava/util/ArrayList;"; // #63    
    Utf8 "LocalVariableTypeTable"; // #64    
    Utf8 "Ljava/util/ArrayList<Ljava/lang/String;>;"; // #65    
    Utf8 "SourceFile"; // #66    
    Utf8 "DuplicateLVTT.java"; // #67    
    NameAndType #35 #36; // #68    
    Utf8 "java/util/ArrayList"; // #69    
    Utf8 "me"; // #70    
    NameAndType #97 #98; // #71    
    class #99; // #72    
    NameAndType #100 #101; // #73    
    Utf8 "java/lang/StringBuilder"; // #74    
    Utf8 "b="; // #75    
    NameAndType #102 #103; // #76    
    NameAndType #102 #104; // #77    
    NameAndType #105 #106; // #78    
    class #107; // #79    
    NameAndType #108 #109; // #80    
    Utf8 "by="; // #81    
    NameAndType #102 #110; // #82    
    Utf8 "c="; // #83    
    NameAndType #102 #111; // #84    
    Utf8 "d="; // #85    
    NameAndType #102 #112; // #86    
    Utf8 "f="; // #87    
    NameAndType #102 #113; // #88    
    Utf8 "i="; // #89    
    Utf8 "l="; // #90    
    NameAndType #102 #114; // #91    
    Utf8 "s="; // #92    
    Utf8 "ArrayList<String>="; // #93    
    NameAndType #102 #115; // #94    
    Utf8 "DuplicateLVTT"; // #95    
    Utf8 "java/lang/Object"; // #96    
    Utf8 "add"; // #97    
    Utf8 "(Ljava/lang/Object;)Z"; // #98    
    Utf8 "java/lang/System"; // #99    
    Utf8 "out"; // #100    
    Utf8 "Ljava/io/PrintStream;"; // #101    
    Utf8 "append"; // #102    
    Utf8 "(Ljava/lang/String;)Ljava/lang/StringBuilder;"; // #103    
    Utf8 "(Z)Ljava/lang/StringBuilder;"; // #104    
    Utf8 "toString"; // #105    
    Utf8 "()Ljava/lang/String;"; // #106    
    Utf8 "java/io/PrintStream"; // #107    
    Utf8 "println"; // #108    
    Utf8 "(Ljava/lang/String;)V"; // #109    
    Utf8 "(I)Ljava/lang/StringBuilder;"; // #110    
    Utf8 "(C)Ljava/lang/StringBuilder;"; // #111    
    Utf8 "(D)Ljava/lang/StringBuilder;"; // #112    
    Utf8 "(F)Ljava/lang/StringBuilder;"; // #113    
    Utf8 "(J)Ljava/lang/StringBuilder;"; // #114    
    Utf8 "(Ljava/lang/Object;)Ljava/lang/StringBuilder;"; // #115    
  } // Constant Pool

  0x0021; // access
  #33;// this_cpx
  #34;// super_cpx

  [] { // Interfaces
  } // Interfaces

  [] { // fields
  } // fields

  [] { // methods
    { // Member
      0x0001; // access
      #35; // name_cpx
      #36; // sig_cpx
      [] { // Attributes
        Attr(#37) { // Code
          1; // max_stack
          1; // max_locals
          Bytes[]{
            0x2AB70001B1;
          };
          [] { // Traps
          } // end Traps
          [] { // Attributes
            Attr(#38) { // LineNumberTable
              [] { // LineNumberTable
                0  26;
              }
            } // end LineNumberTable
            ;
            Attr(#39) { // LocalVariableTable
              [] { // LocalVariableTable
                0 5 40 41 0;
              }
            } // end LocalVariableTable
          } // Attributes
        } // end Code
      } // Attributes
    } // Member
    ;
    { // Member
      0x0009; // access
      #42; // name_cpx
      #43; // sig_cpx
      [] { // Attributes
        Attr(#37) { // Code
          4; // max_stack
          12; // max_locals
          Bytes[]{
            0x043C10423D10583E;
            0x1400023904120438;
            0x06102A3607140005;
            0x37081058360ABB00;
            0x0759B700083A0B19;
            0x0B1209B6000A57B2;
            0x000BBB000C59B700;
            0x0D120EB6000F1BB6;
            0x0010B60011B60012;
            0xB2000BBB000C59B7;
            0x000D1213B6000F1C;
            0xB60014B60011B600;
            0x12B2000BBB000C59;
            0xB7000D1215B6000F;
            0x1DB60016B60011B6;
            0x0012B2000BBB000C;
            0x59B7000D1217B600;
            0x0F1804B60018B600;
            0x11B60012B2000BBB;
            0x000C59B7000D1219;
            0xB6000F1706B6001A;
            0xB60011B60012B200;
            0x0BBB000C59B7000D;
            0x121BB6000F1507B6;
            0x0014B60011B60012;
            0xB2000BBB000C59B7;
            0x000D121CB6000F16;
            0x08B6001DB60011B6;
            0x0012B2000BBB000C;
            0x59B7000D121EB600;
            0x0F150AB60014B600;
            0x11B60012B2000BBB;
            0x000C59B7000D121F;
            0xB6000F190BB60020;
            0xB60011B60012B1;
          };
          [] { // Traps
          } // end Traps
          [] { // Attributes
            Attr(#38) { // LineNumberTable
              [] { // LineNumberTable
                0  28;
                2  29;
                5  30;
                8  31;
                13  32;
                17  33;
                21  34;
                26  35;
                30  36;
                39  37;
                47  39;
                72  40;
                97  41;
                122  42;
                148  43;
                174  44;
                200  45;
                226  46;
                252  47;
                278  48;
              }
            } // end LineNumberTable
            ;
            Attr(#39) { // LocalVariableTable
              [] { // LocalVariableTable
                0 279 44 45 0;
                2 277 46 47 1;
                5 274 48 49 2;
                8 271 50 51 3;
                13 266 52 53 4;
                17 262 54 55 6;
                21 258 56 57 7;
                26 253 58 59 8;
                30 249 60 61 10;
                39 240 62 63 11;
              }
            } // end LocalVariableTable
            ;
            Attr(#64) { // LocalVariableTypeTable
              [] { // LocalVariableTypeTable
                39 240 62 65 11;
                39 240 62 65 11;
              }
            } // end LocalVariableTypeTable
          } // Attributes
        } // end Code
      } // Attributes
    } // Member
  } // methods

  [] { // Attributes
    Attr(#66) { // SourceFile
      #67;
    } // end SourceFile
  } // Attributes
} // end class DuplicateLVTT
