Bytecode Analysis for script: ary

        // $Id: scripts.ary.java,v 1.1 2004-05-22 07:27:00 bfulgham Exp $
// http://www.bagley.org/~doug/shootout/

// this program is modified from:
//   http://cm.bell-labs.com/cm/cs/who/bwk/interps/pap.html
// Timing Trials, or, the Trials of Timing: Experiments with Scripting
// and User-Interface Languages</a> by Brian W. Kernighan and
// Christopher J. Van Wyk.


public class ary {
    public static void main(String[] args) {
        int i, j, k, n = Integer.parseInt(args[0]);
        int[] x = new int[n];
        int[] y = new int[n];

        for (i = 0; i < n; i++)
            x[i] = i + 1;
        for (k = 0; k < 1000; k++ )
            for (j = n-1; j >= 0; j--)
                y[j] += x[j];

        System.out.println(y[0] + " " + y[n-1]);
    }
}

      
Groovyc Indy Static
Lines Removed 54 30 38
Total Lines - Before 683 276 259
Percentage of Lines Removed 7.9 10.9 14.7

Benchmarks

For parameter: 10

Groovyc Indy Static
Benchmark Average - Before 397 487 299
Benchmark Average - After 378 489 301
Benchmark Std Dev - Before 9.97 10.16 3.85
Benchmark Std Dev - After 5.86 12.93 4.72

For parameter: 100

Groovyc Indy Static
Benchmark Average - Before 402 554 310
Benchmark Average - After 386 558 305
Benchmark Std Dev - Before 10.28 10.38 6.76
Benchmark Std Dev - After 5.09 12.19 3.2

BEFORE

Groovyc (Legacy)

          Compiled from "ary.groovy"
public class ary implements groovy.lang.GroovyObject {
  public static transient boolean __$stMC;

  public ary();
    Code:
       0: aload_0
       1: invokespecial #17                 // Method java/lang/Object."<init>":()V
       4: invokestatic  #21                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       7: astore_1
       8: aload_0
       9: invokevirtual #25                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
      12: astore_2
      13: aload_2
      14: aload_0
      15: swap
      16: putfield      #27                 // Field metaClass:Lgroovy/lang/MetaClass;
      19: aload_2
      20: pop
      21: return

  public static void main(java.lang.String...);
    Code:
       0: invokestatic  #21                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_1
       4: ldc           #32                 // int 0
       6: istore_2
       7: iload_2
       8: pop
       9: ldc           #32                 // int 0
      11: istore_3
      12: iload_3
      13: pop
      14: ldc           #32                 // int 0
      16: istore        4
      18: iload         4
      20: pop
      21: ldc           #32                 // int 0
      23: istore        5
      25: invokestatic  #38                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
      28: ifeq          46
      31: getstatic     #40                 // Field __$stMC:Z
      34: ifne          46
      37: invokestatic  #43                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
      40: ifne          46
      43: goto          86
      46: aload_1
      47: ldc           #32                 // int 0
      49: aaload
      50: ldc           #45                 // class java/lang/Integer
      52: aload_1
      53: ldc           #46                 // int 1
      55: aaload
      56: aload_0
      57: iconst_0
      58: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      61: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      66: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      71: astore        6
      73: aload         6
      75: invokestatic  #62                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
      78: istore        5
      80: aload         6
      82: pop
      83: goto          114
      86: aload_1
      87: ldc           #63                 // int 2
      89: aaload
      90: ldc           #45                 // class java/lang/Integer
      92: aload_0
      93: iconst_0
      94: invokestatic  #67                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.objectArrayGet:([Ljava/lang/Object;I)Ljava/lang/Object;
      97: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     102: astore        7
     104: aload         7
     106: invokestatic  #62                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     109: istore        5
     111: aload         7
     113: pop
     114: iload         5
     116: multianewarray #69,  1            // class "[I"
     120: astore        8
     122: aload         8
     124: pop
     125: iload         5
     127: multianewarray #69,  1            // class "[I"
     131: astore        9
     133: aload         9
     135: pop
     136: invokestatic  #38                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
     139: ifeq          163
     142: invokestatic  #72                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigZ:()Z
     145: ifeq          163
     148: getstatic     #40                 // Field __$stMC:Z
     151: ifne          163
     154: invokestatic  #43                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
     157: ifne          163
     160: goto          258
     163: iconst_0
     164: istore        10
     166: iload         10
     168: istore_2
     169: iload         10
     171: pop
     172: iload_2
     173: iload         5
     175: if_icmpge     182
     178: iconst_1
     179: goto          183
     182: iconst_0
     183: ifeq          255
     186: aload_1
     187: ldc           #73                 // int 3
     189: aaload
     190: iload_2
     191: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     194: iconst_1
     195: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     198: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     203: astore        11
     205: aload_1
     206: ldc           #74                 // int 4
     208: aaload
     209: aload         8
     211: iload_2
     212: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     215: aload         11
     217: invokeinterface #77,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     222: pop
     223: aload         11
     225: pop
     226: iload_2
     227: dup
     228: istore        12
     230: aload_1
     231: ldc           #78                 // int 5
     233: aaload
     234: swap
     235: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     238: invokeinterface #81,  2           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
     243: dup
     244: invokestatic  #62                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     247: istore_2
     248: pop
     249: iload         12
     251: pop
     252: goto          172
     255: goto          312
     258: iconst_0
     259: istore        13
     261: iload         13
     263: istore_2
     264: iload         13
     266: pop
     267: iload_2
     268: iload         5
     270: if_icmpge     277
     273: iconst_1
     274: goto          278
     277: iconst_0
     278: ifeq          312
     281: iload_2
     282: iconst_1
     283: iadd
     284: istore        14
     286: aload         8
     288: iload_2
     289: iload         14
     291: invokestatic  #85                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArraySet:([III)V
     294: iload         14
     296: pop
     297: iload_2
     298: dup
     299: istore        15
     301: iconst_1
     302: iadd
     303: dup
     304: istore_2
     305: pop
     306: iload         15
     308: pop
     309: goto          267
     312: invokestatic  #38                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
     315: ifeq          339
     318: invokestatic  #72                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigZ:()Z
     321: ifeq          339
     324: getstatic     #40                 // Field __$stMC:Z
     327: ifne          339
     330: invokestatic  #43                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
     333: ifne          339
     336: goto          538
     339: iconst_0
     340: istore        16
     342: iload         16
     344: istore        4
     346: iload         16
     348: pop
     349: iload         4
     351: sipush        1000
     354: if_icmpge     361
     357: iconst_1
     358: goto          362
     361: iconst_0
     362: ifeq          535
     365: aload_1
     366: ldc           #86                 // int 6
     368: aaload
     369: iload         5
     371: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     374: iconst_1
     375: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     378: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     383: astore        17
     385: aload         17
     387: invokestatic  #62                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     390: istore_3
     391: aload         17
     393: pop
     394: iload_3
     395: iconst_0
     396: if_icmplt     403
     399: iconst_1
     400: goto          404
     403: iconst_0
     404: ifeq          504
     407: aload_1
     408: ldc           #87                 // int 7
     410: aaload
     411: aload         9
     413: dup
     414: astore        18
     416: iload_3
     417: dup
     418: istore        19
     420: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     423: aload_1
     424: ldc           #88                 // int 8
     426: aaload
     427: aload_1
     428: ldc           #89                 // int 9
     430: aaload
     431: aload         18
     433: iload         19
     435: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     438: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     443: aload_1
     444: ldc           #90                 // int 10
     446: aaload
     447: aload         8
     449: iload_3
     450: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     453: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     458: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     463: dup
     464: astore        20
     466: invokeinterface #77,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     471: pop
     472: aload         20
     474: pop
     475: iload_3
     476: dup
     477: istore        21
     479: aload_1
     480: ldc           #91                 // int 11
     482: aaload
     483: swap
     484: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     487: invokeinterface #81,  2           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
     492: dup
     493: invokestatic  #62                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     496: istore_3
     497: pop
     498: iload         21
     500: pop
     501: goto          394
     504: iload         4
     506: dup
     507: istore        22
     509: aload_1
     510: ldc           #92                 // int 12
     512: aaload
     513: swap
     514: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     517: invokeinterface #81,  2           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
     522: dup
     523: invokestatic  #62                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     526: istore        4
     528: pop
     529: iload         22
     531: pop
     532: goto          349
     535: goto          651
     538: iconst_0
     539: istore        23
     541: iload         23
     543: istore        4
     545: iload         23
     547: pop
     548: iload         4
     550: sipush        1000
     553: if_icmpge     560
     556: iconst_1
     557: goto          561
     560: iconst_0
     561: ifeq          651
     564: iload         5
     566: iconst_1
     567: isub
     568: istore        24
     570: iload         24
     572: istore_3
     573: iload         24
     575: pop
     576: iload_3
     577: iconst_0
     578: if_icmplt     585
     581: iconst_1
     582: goto          586
     585: iconst_0
     586: ifeq          634
     589: iload_3
     590: istore        25
     592: aload         9
     594: dup
     595: iload         25
     597: invokestatic  #96                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     600: aload         8
     602: iload_3
     603: invokestatic  #96                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     606: iadd
     607: dup
     608: istore        26
     610: iload         25
     612: swap
     613: invokestatic  #85                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArraySet:([III)V
     616: iload         26
     618: pop
     619: iload_3
     620: dup
     621: istore        27
     623: iconst_1
     624: isub
     625: dup
     626: istore_3
     627: pop
     628: iload         27
     630: pop
     631: goto          576
     634: iload         4
     636: dup
     637: istore        28
     639: iconst_1
     640: iadd
     641: dup
     642: istore        4
     644: pop
     645: iload         28
     647: pop
     648: goto          548
     651: invokestatic  #38                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
     654: ifeq          672
     657: getstatic     #40                 // Field __$stMC:Z
     660: ifne          672
     663: invokestatic  #43                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
     666: ifne          672
     669: goto          760
     672: aload_1
     673: ldc           #97                 // int 13
     675: aaload
     676: aload_1
     677: ldc           #98                 // int 14
     679: aaload
     680: ldc           #100                // class java/lang/System
     682: invokeinterface #103,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callGetProperty:(Ljava/lang/Object;)Ljava/lang/Object;
     687: aload_1
     688: ldc           #104                // int 15
     690: aaload
     691: aload_1
     692: ldc           #105                // int 16
     694: aaload
     695: aload_1
     696: ldc           #106                // int 17
     698: aaload
     699: aload         9
     701: iconst_0
     702: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     705: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     710: ldc           #108                // String
     712: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     717: aload_1
     718: ldc           #109                // int 18
     720: aaload
     721: aload         9
     723: aload_1
     724: ldc           #110                // int 19
     726: aaload
     727: iload         5
     729: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     732: iconst_1
     733: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     736: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     741: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     746: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     751: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     756: pop
     757: goto          822
     760: aload_1
     761: ldc           #111                // int 20
     763: aaload
     764: aload_1
     765: ldc           #112                // int 21
     767: aaload
     768: ldc           #100                // class java/lang/System
     770: invokeinterface #103,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callGetProperty:(Ljava/lang/Object;)Ljava/lang/Object;
     775: aload_1
     776: ldc           #113                // int 22
     778: aaload
     779: aload_1
     780: ldc           #114                // int 23
     782: aaload
     783: aload         9
     785: iconst_0
     786: invokestatic  #96                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     789: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     792: ldc           #108                // String
     794: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     799: aload         9
     801: iload         5
     803: iconst_1
     804: isub
     805: invokestatic  #96                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     808: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     811: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     816: invokeinterface #56,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     821: pop
     822: return

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #127                // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class ary
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #133                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #135                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #127                // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #141                // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #135                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #144                // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn

  public groovy.lang.MetaClass getMetaClass();
    Code:
       0: aload_0
       1: getfield      #27                 // Field metaClass:Lgroovy/lang/MetaClass;
       4: dup
       5: ifnull        9
       8: areturn
       9: pop
      10: aload_0
      11: dup
      12: invokevirtual #25                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
      15: putfield      #27                 // Field metaClass:Lgroovy/lang/MetaClass;
      18: aload_0
      19: getfield      #27                 // Field metaClass:Lgroovy/lang/MetaClass;
      22: areturn

  public void setMetaClass(groovy.lang.MetaClass);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #27                 // Field metaClass:Lgroovy/lang/MetaClass;
       5: return

  public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #149                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #154,  4          // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
      12: areturn

  public java.lang.Object getProperty(java.lang.String);
    Code:
       0: aload_0
       1: invokevirtual #149                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: invokeinterface #159,  3          // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
      11: areturn

  public void setProperty(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #149                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #164,  4          // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
      12: return
}

        

Invoke Dynamic

          Compiled from "ary.groovy"
public class ary implements groovy.lang.GroovyObject {
  public static transient boolean __$stMC;

  public ary();
    Code:
       0: aload_0
       1: invokespecial #17                 // Method java/lang/Object."<init>":()V
       4: aload_0
       5: invokevirtual #21                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
       8: astore_1
       9: aload_1
      10: aload_0
      11: swap
      12: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      15: aload_1
      16: pop
      17: return

  public static void main(java.lang.String...);
    Code:
       0: ldc           #28                 // int 0
       2: istore_1
       3: iload_1
       4: pop
       5: ldc           #28                 // int 0
       7: istore_2
       8: iload_2
       9: pop
      10: ldc           #28                 // int 0
      12: istore_3
      13: iload_3
      14: pop
      15: ldc           #30                 // class java/lang/Integer
      17: aload_0
      18: iconst_0
      19: invokedynamic #43,  0             // InvokeDynamic #0:invoke:([Ljava/lang/String;I)Ljava/lang/Object;
      24: invokedynamic #48,  0             // InvokeDynamic #1:invoke:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
      29: invokestatic  #54                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
      32: istore        4
      34: iload         4
      36: pop
      37: iload         4
      39: multianewarray #56,  1            // class "[I"
      43: astore        5
      45: aload         5
      47: pop
      48: iload         4
      50: multianewarray #56,  1            // class "[I"
      54: astore        6
      56: aload         6
      58: pop
      59: iconst_0
      60: istore        7
      62: iload         7
      64: istore_1
      65: iload         7
      67: pop
      68: iload_1
      69: iload         4
      71: if_icmpge     78
      74: iconst_1
      75: goto          79
      78: iconst_0
      79: ifeq          126
      82: iload_1
      83: iconst_1
      84: invokedynamic #61,  0             // InvokeDynamic #2:invoke:(II)Ljava/lang/Object;
      89: astore        8
      91: aload         5
      93: iload_1
      94: aload         8
      96: invokedynamic #66,  0             // InvokeDynamic #3:invoke:([IILjava/lang/Object;)Ljava/lang/Object;
     101: pop
     102: aload         8
     104: pop
     105: iload_1
     106: dup
     107: istore        9
     109: invokedynamic #71,  0             // InvokeDynamic #4:invoke:(I)Ljava/lang/Object;
     114: dup
     115: invokestatic  #54                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     118: istore_1
     119: pop
     120: iload         9
     122: pop
     123: goto          68
     126: iconst_0
     127: istore        10
     129: iload         10
     131: istore_3
     132: iload         10
     134: pop
     135: iload_3
     136: sipush        1000
     139: if_icmpge     146
     142: iconst_1
     143: goto          147
     146: iconst_0
     147: ifeq          267
     150: iload         4
     152: iconst_1
     153: invokedynamic #74,  0             // InvokeDynamic #5:invoke:(II)Ljava/lang/Object;
     158: astore        11
     160: aload         11
     162: invokestatic  #54                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     165: istore_2
     166: aload         11
     168: pop
     169: iload_2
     170: iconst_0
     171: if_icmplt     178
     174: iconst_1
     175: goto          179
     178: iconst_0
     179: ifeq          246
     182: aload         6
     184: dup
     185: astore        12
     187: iload_2
     188: dup
     189: istore        13
     191: aload         12
     193: iload         13
     195: invokedynamic #77,  0             // InvokeDynamic #0:invoke:([II)Ljava/lang/Object;
     200: aload         5
     202: iload_2
     203: invokedynamic #77,  0             // InvokeDynamic #0:invoke:([II)Ljava/lang/Object;
     208: invokedynamic #80,  0             // InvokeDynamic #2:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     213: dup
     214: astore        14
     216: invokedynamic #66,  0             // InvokeDynamic #3:invoke:([IILjava/lang/Object;)Ljava/lang/Object;
     221: pop
     222: aload         14
     224: pop
     225: iload_2
     226: dup
     227: istore        15
     229: invokedynamic #83,  0             // InvokeDynamic #6:invoke:(I)Ljava/lang/Object;
     234: dup
     235: invokestatic  #54                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     238: istore_2
     239: pop
     240: iload         15
     242: pop
     243: goto          169
     246: iload_3
     247: dup
     248: istore        16
     250: invokedynamic #71,  0             // InvokeDynamic #4:invoke:(I)Ljava/lang/Object;
     255: dup
     256: invokestatic  #54                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     259: istore_3
     260: pop
     261: iload         16
     263: pop
     264: goto          135
     267: ldc           #85                 // class java/lang/System
     269: invokedynamic #91,  0             // InvokeDynamic #7:getProperty:(Ljava/lang/Class;)Ljava/lang/Object;
     274: aload         6
     276: iconst_0
     277: invokedynamic #77,  0             // InvokeDynamic #0:invoke:([II)Ljava/lang/Object;
     282: ldc           #93                 // String
     284: invokedynamic #96,  0             // InvokeDynamic #2:invoke:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
     289: aload         6
     291: iload         4
     293: iconst_1
     294: invokedynamic #74,  0             // InvokeDynamic #5:invoke:(II)Ljava/lang/Object;
     299: invokedynamic #99,  0             // InvokeDynamic #0:invoke:([ILjava/lang/Object;)Ljava/lang/Object;
     304: invokedynamic #80,  0             // InvokeDynamic #2:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     309: invokedynamic #102,  0            // InvokeDynamic #8:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     314: pop
     315: return

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #116                // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class ary
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #122                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #124                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #116                // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #130                // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #124                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #133                // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn

  public groovy.lang.MetaClass getMetaClass();
    Code:
       0: aload_0
       1: getfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
       4: dup
       5: ifnull        9
       8: areturn
       9: pop
      10: aload_0
      11: dup
      12: invokevirtual #21                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
      15: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      18: aload_0
      19: getfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      22: areturn

  public void setMetaClass(groovy.lang.MetaClass);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
       5: return

  public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #140                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #143,  4          // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
      12: areturn

  public java.lang.Object getProperty(java.lang.String);
    Code:
       0: aload_0
       1: invokevirtual #140                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: invokeinterface #146,  3          // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
      11: areturn

  public void setProperty(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #140                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #151,  4          // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
      12: return
}

        

Static Compilation

          Compiled from "ary.groovy"
public class ary implements groovy.lang.GroovyObject {
  public static transient boolean __$stMC;

  public ary();
    Code:
       0: aload_0
       1: invokespecial #17                 // Method java/lang/Object."<init>":()V
       4: aload_0
       5: invokevirtual #21                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
       8: astore_1
       9: aload_1
      10: aload_0
      11: swap
      12: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      15: aload_1
      16: pop
      17: return

  public static void main(java.lang.String...);
    Code:
       0: ldc           #28                 // int 0
       2: istore_1
       3: iload_1
       4: pop
       5: ldc           #28                 // int 0
       7: istore_2
       8: iload_2
       9: pop
      10: ldc           #28                 // int 0
      12: istore_3
      13: iload_3
      14: pop
      15: aload_0
      16: iconst_0
      17: invokestatic  #34                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.objectArrayGet:([Ljava/lang/Object;I)Ljava/lang/Object;
      20: invokestatic  #40                 // Method org/codehaus/groovy/runtime/typehandling/ShortTypeHandling.castToString:(Ljava/lang/Object;)Ljava/lang/String;
      23: checkcast     #42                 // class java/lang/String
      26: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
      29: istore        4
      31: iload         4
      33: pop
      34: iload         4
      36: multianewarray #50,  1            // class "[I"
      40: astore        5
      42: aload         5
      44: pop
      45: iload         4
      47: multianewarray #50,  1            // class "[I"
      51: astore        6
      53: aload         6
      55: pop
      56: iconst_0
      57: istore        7
      59: iload         7
      61: istore_1
      62: iload         7
      64: pop
      65: iload_1
      66: iload         4
      68: if_icmpge     75
      71: iconst_1
      72: goto          76
      75: iconst_0
      76: ifeq          110
      79: iload_1
      80: iconst_1
      81: iadd
      82: istore        8
      84: aload         5
      86: iload_1
      87: iload         8
      89: invokestatic  #54                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArraySet:([III)V
      92: iload         8
      94: pop
      95: iload_1
      96: dup
      97: istore        9
      99: iconst_1
     100: iadd
     101: dup
     102: istore_1
     103: pop
     104: iload         9
     106: pop
     107: goto          65
     110: iconst_0
     111: istore        10
     113: iload         10
     115: istore_3
     116: iload         10
     118: pop
     119: iload_3
     120: sipush        1000
     123: if_icmpge     130
     126: iconst_1
     127: goto          131
     130: iconst_0
     131: ifeq          219
     134: iload         4
     136: iconst_1
     137: isub
     138: istore        11
     140: iload         11
     142: istore_2
     143: iload         11
     145: pop
     146: iload_2
     147: iconst_0
     148: if_icmplt     155
     151: iconst_1
     152: goto          156
     155: iconst_0
     156: ifeq          204
     159: iload_2
     160: istore        12
     162: aload         6
     164: dup
     165: iload         12
     167: invokestatic  #58                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     170: aload         5
     172: iload_2
     173: invokestatic  #58                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     176: iadd
     177: dup
     178: istore        13
     180: iload         12
     182: swap
     183: invokestatic  #54                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArraySet:([III)V
     186: iload         13
     188: pop
     189: iload_2
     190: dup
     191: istore        14
     193: iconst_1
     194: isub
     195: dup
     196: istore_2
     197: pop
     198: iload         14
     200: pop
     201: goto          146
     204: iload_3
     205: dup
     206: istore        15
     208: iconst_1
     209: iadd
     210: dup
     211: istore_3
     212: pop
     213: iload         15
     215: pop
     216: goto          119
     219: getstatic     #64                 // Field java/lang/System.out:Ljava/io/PrintStream;
     222: aload         6
     224: iconst_0
     225: invokestatic  #58                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     228: invokestatic  #68                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     231: ldc           #70                 // String
     233: invokestatic  #76                 // Method org/codehaus/groovy/runtime/StringGroovyMethods.plus:(Ljava/lang/Number;Ljava/lang/String;)Ljava/lang/String;
     236: aload         6
     238: iload         4
     240: iconst_1
     241: isub
     242: invokestatic  #58                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     245: invokestatic  #68                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     248: invokestatic  #79                 // Method org/codehaus/groovy/runtime/StringGroovyMethods.plus:(Ljava/lang/CharSequence;Ljava/lang/Object;)Ljava/lang/String;
     251: invokevirtual #85                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
     254: aconst_null
     255: pop
     256: return

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #98                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class ary
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #104                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #106                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #98                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #112                // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #106                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #115                // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn

  public groovy.lang.MetaClass getMetaClass();
    Code:
       0: aload_0
       1: getfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
       4: dup
       5: ifnull        9
       8: areturn
       9: pop
      10: aload_0
      11: dup
      12: invokevirtual #21                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
      15: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      18: aload_0
      19: getfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      22: areturn

  public void setMetaClass(groovy.lang.MetaClass);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
       5: return

  public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #120                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #125,  4          // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
      12: areturn

  public java.lang.Object getProperty(java.lang.String);
    Code:
       0: aload_0
       1: invokevirtual #120                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: invokeinterface #130,  3          // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
      11: areturn

  public void setProperty(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #120                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #135,  4          // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
      12: return
}

        

AFTER

Groovyc (Legacy)

          Compiled from "ary.groovy"
public class ary implements groovy.lang.GroovyObject {
  public static transient boolean __$stMC;

  public ary();
    Code:
       0: aload_0
       1: invokespecial #19                 // Method java/lang/Object."<init>":()V
       4: invokestatic  #23                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       7: astore_1
       8: aload_0
       9: invokevirtual #27                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
      12: astore_2
      13: aload_2
      14: aload_0
      15: swap
      16: putfield      #29                 // Field metaClass:Lgroovy/lang/MetaClass;
      19: return

  public static void main(java.lang.String...);
    Code:
       0: invokestatic  #23                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_1
       4: ldc           #34                 // int 0
       6: istore_2
       7: ldc           #34                 // int 0
       9: istore_3
      10: ldc           #34                 // int 0
      12: istore        4
      14: ldc           #34                 // int 0
      16: istore        5
      18: invokestatic  #40                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
      21: ifeq          39
      24: getstatic     #42                 // Field __$stMC:Z
      27: ifne          39
      30: invokestatic  #45                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
      33: ifne          39
      36: goto          76
      39: aload_1
      40: ldc           #34                 // int 0
      42: aaload
      43: ldc           #47                 // class java/lang/Integer
      45: aload_1
      46: ldc           #48                 // int 1
      48: aaload
      49: aload_0
      50: iconst_0
      51: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      54: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      59: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      64: astore        6
      66: aload         6
      68: invokestatic  #64                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
      71: istore        5
      73: goto          101
      76: aload_1
      77: ldc           #65                 // int 2
      79: aaload
      80: ldc           #47                 // class java/lang/Integer
      82: aload_0
      83: iconst_0
      84: invokestatic  #69                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.objectArrayGet:([Ljava/lang/Object;I)Ljava/lang/Object;
      87: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      92: astore        7
      94: aload         7
      96: invokestatic  #64                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
      99: istore        5
     101: iload         5
     103: multianewarray #71,  1            // class "[I"
     107: astore        8
     109: iload         5
     111: multianewarray #71,  1            // class "[I"
     115: astore        9
     117: invokestatic  #40                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
     120: ifeq          144
     123: invokestatic  #74                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigZ:()Z
     126: ifeq          144
     129: getstatic     #42                 // Field __$stMC:Z
     132: ifne          144
     135: invokestatic  #45                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
     138: ifne          144
     141: goto          230
     144: iconst_0
     145: istore        10
     147: iload         10
     149: istore_2
     150: iload_2
     151: iload         5
     153: if_icmpge     160
     156: iconst_1
     157: goto          161
     160: iconst_0
     161: ifeq          227
     164: aload_1
     165: ldc           #75                 // int 3
     167: aaload
     168: iload_2
     169: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     172: iconst_1
     173: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     176: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     181: astore        11
     183: aload_1
     184: ldc           #76                 // int 4
     186: aaload
     187: aload         8
     189: iload_2
     190: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     193: aload         11
     195: invokeinterface #79,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     200: pop
     201: iload_2
     202: dup
     203: istore        12
     205: aload_1
     206: ldc           #80                 // int 5
     208: aaload
     209: swap
     210: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     213: invokeinterface #83,  2           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
     218: dup
     219: invokestatic  #64                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     222: istore_2
     223: pop
     224: goto          150
     227: goto          273
     230: iconst_0
     231: istore        13
     233: iload         13
     235: istore_2
     236: iload_2
     237: iload         5
     239: if_icmpge     246
     242: iconst_1
     243: goto          247
     246: iconst_0
     247: ifeq          273
     250: iload_2
     251: iconst_1
     252: iadd
     253: istore        14
     255: aload         8
     257: iload_2
     258: iload         14
     260: invokestatic  #87                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArraySet:([III)V
     263: iload_2
     264: dup
     265: istore        15
     267: iconst_1
     268: iadd
     269: istore_2
     270: goto          236
     273: invokestatic  #40                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
     276: ifeq          300
     279: invokestatic  #74                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigZ:()Z
     282: ifeq          300
     285: getstatic     #42                 // Field __$stMC:Z
     288: ifne          300
     291: invokestatic  #45                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
     294: ifne          300
     297: goto          484
     300: iconst_0
     301: istore        16
     303: iload         16
     305: istore        4
     307: iload         4
     309: sipush        1000
     312: if_icmpge     319
     315: iconst_1
     316: goto          320
     319: iconst_0
     320: ifeq          481
     323: aload_1
     324: ldc           #88                 // int 6
     326: aaload
     327: iload         5
     329: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     332: iconst_1
     333: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     336: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     341: astore        17
     343: aload         17
     345: invokestatic  #64                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     348: istore_3
     349: iload_3
     350: iconst_0
     351: if_icmplt     358
     354: iconst_1
     355: goto          359
     358: iconst_0
     359: ifeq          453
     362: aload_1
     363: ldc           #89                 // int 7
     365: aaload
     366: aload         9
     368: dup
     369: astore        18
     371: iload_3
     372: dup
     373: istore        19
     375: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     378: aload_1
     379: ldc           #90                 // int 8
     381: aaload
     382: aload_1
     383: ldc           #91                 // int 9
     385: aaload
     386: aload         18
     388: iload         19
     390: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     393: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     398: aload_1
     399: ldc           #92                 // int 10
     401: aaload
     402: aload         8
     404: iload_3
     405: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     408: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     413: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     418: dup
     419: astore        20
     421: invokeinterface #79,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     426: pop
     427: iload_3
     428: dup
     429: istore        21
     431: aload_1
     432: ldc           #93                 // int 11
     434: aaload
     435: swap
     436: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     439: invokeinterface #83,  2           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
     444: dup
     445: invokestatic  #64                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     448: istore_3
     449: pop
     450: goto          349
     453: iload         4
     455: dup
     456: istore        22
     458: aload_1
     459: ldc           #94                 // int 12
     461: aaload
     462: swap
     463: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     466: invokeinterface #83,  2           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
     471: dup
     472: invokestatic  #64                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     475: istore        4
     477: pop
     478: goto          307
     481: goto          578
     484: iconst_0
     485: istore        23
     487: iload         23
     489: istore        4
     491: iload         4
     493: sipush        1000
     496: if_icmpge     503
     499: iconst_1
     500: goto          504
     503: iconst_0
     504: ifeq          578
     507: iload         5
     509: iconst_1
     510: isub
     511: istore        24
     513: iload         24
     515: istore_3
     516: iload_3
     517: iconst_0
     518: if_icmplt     525
     521: iconst_1
     522: goto          526
     525: iconst_0
     526: ifeq          566
     529: iload_3
     530: istore        25
     532: aload         9
     534: dup
     535: iload         25
     537: invokestatic  #98                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     540: aload         8
     542: iload_3
     543: invokestatic  #98                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     546: iadd
     547: dup
     548: istore        26
     550: iload         25
     552: swap
     553: invokestatic  #87                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArraySet:([III)V
     556: iload_3
     557: dup
     558: istore        27
     560: iconst_1
     561: isub
     562: istore_3
     563: goto          516
     566: iload         4
     568: dup
     569: istore        28
     571: iconst_1
     572: iadd
     573: istore        4
     575: goto          491
     578: invokestatic  #40                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
     581: ifeq          599
     584: getstatic     #42                 // Field __$stMC:Z
     587: ifne          599
     590: invokestatic  #45                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
     593: ifne          599
     596: goto          687
     599: aload_1
     600: ldc           #99                 // int 13
     602: aaload
     603: aload_1
     604: ldc           #100                // int 14
     606: aaload
     607: ldc           #102                // class java/lang/System
     609: invokeinterface #105,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callGetProperty:(Ljava/lang/Object;)Ljava/lang/Object;
     614: aload_1
     615: ldc           #106                // int 15
     617: aaload
     618: aload_1
     619: ldc           #107                // int 16
     621: aaload
     622: aload_1
     623: ldc           #108                // int 17
     625: aaload
     626: aload         9
     628: iconst_0
     629: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     632: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     637: ldc           #110                // String
     639: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     644: aload_1
     645: ldc           #111                // int 18
     647: aaload
     648: aload         9
     650: aload_1
     651: ldc           #112                // int 19
     653: aaload
     654: iload         5
     656: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     659: iconst_1
     660: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     663: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     668: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     673: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     678: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     683: pop
     684: goto          749
     687: aload_1
     688: ldc           #113                // int 20
     690: aaload
     691: aload_1
     692: ldc           #114                // int 21
     694: aaload
     695: ldc           #102                // class java/lang/System
     697: invokeinterface #105,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callGetProperty:(Ljava/lang/Object;)Ljava/lang/Object;
     702: aload_1
     703: ldc           #115                // int 22
     705: aaload
     706: aload_1
     707: ldc           #116                // int 23
     709: aaload
     710: aload         9
     712: iconst_0
     713: invokestatic  #98                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     716: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     719: ldc           #110                // String
     721: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     726: aload         9
     728: iload         5
     730: iconst_1
     731: isub
     732: invokestatic  #98                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     735: invokestatic  #52                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     738: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     743: invokeinterface #58,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     748: pop
     749: return

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #129                // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class ary
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #135                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #137                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #129                // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #143                // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #137                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #146                // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn

  public groovy.lang.MetaClass getMetaClass();
    Code:
       0: aload_0
       1: getfield      #29                 // Field metaClass:Lgroovy/lang/MetaClass;
       4: dup
       5: ifnull        9
       8: areturn
       9: pop
      10: aload_0
      11: dup
      12: invokevirtual #27                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
      15: putfield      #29                 // Field metaClass:Lgroovy/lang/MetaClass;
      18: aload_0
      19: getfield      #29                 // Field metaClass:Lgroovy/lang/MetaClass;
      22: areturn

  public void setMetaClass(groovy.lang.MetaClass);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #29                 // Field metaClass:Lgroovy/lang/MetaClass;
       5: return

  public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #151                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #156,  4          // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
      12: areturn

  public java.lang.Object getProperty(java.lang.String);
    Code:
       0: aload_0
       1: invokevirtual #151                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: invokeinterface #161,  3          // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
      11: areturn

  public void setProperty(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #151                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #166,  4          // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
      12: return
}

        

Invoke Dynamic

          Compiled from "ary.groovy"
public class ary implements groovy.lang.GroovyObject {
  public static transient boolean __$stMC;

  public ary();
    Code:
       0: aload_0
       1: invokespecial #17                 // Method java/lang/Object."<init>":()V
       4: aload_0
       5: invokevirtual #21                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
       8: astore_1
       9: aload_1
      10: aload_0
      11: swap
      12: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      15: return

  public static void main(java.lang.String...);
    Code:
       0: ldc           #28                 // int 0
       2: istore_1
       3: ldc           #28                 // int 0
       5: istore_2
       6: ldc           #28                 // int 0
       8: istore_3
       9: ldc           #30                 // class java/lang/Integer
      11: aload_0
      12: iconst_0
      13: invokedynamic #43,  0             // InvokeDynamic #0:invoke:([Ljava/lang/String;I)Ljava/lang/Object;
      18: invokedynamic #48,  0             // InvokeDynamic #1:invoke:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
      23: invokestatic  #54                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
      26: istore        4
      28: iload         4
      30: multianewarray #56,  1            // class "[I"
      34: astore        5
      36: iload         4
      38: multianewarray #56,  1            // class "[I"
      42: astore        6
      44: iconst_0
      45: istore        7
      47: iload         7
      49: istore_1
      50: iload_1
      51: iload         4
      53: if_icmpge     60
      56: iconst_1
      57: goto          61
      60: iconst_0
      61: ifeq          102
      64: iload_1
      65: iconst_1
      66: invokedynamic #63,  0             // InvokeDynamic #2:invoke:(II)Ljava/lang/Object;
      71: astore        8
      73: aload         5
      75: iload_1
      76: aload         8
      78: invokedynamic #68,  0             // InvokeDynamic #3:invoke:([IILjava/lang/Object;)Ljava/lang/Object;
      83: pop
      84: iload_1
      85: dup
      86: istore        9
      88: invokedynamic #73,  0             // InvokeDynamic #4:invoke:(I)Ljava/lang/Object;
      93: dup
      94: invokestatic  #54                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
      97: istore_1
      98: pop
      99: goto          50
     102: iconst_0
     103: istore        10
     105: iload         10
     107: istore_3
     108: iload_3
     109: sipush        1000
     112: if_icmpge     119
     115: iconst_1
     116: goto          120
     119: iconst_0
     120: ifeq          228
     123: iload         4
     125: iconst_1
     126: invokedynamic #76,  0             // InvokeDynamic #5:invoke:(II)Ljava/lang/Object;
     131: astore        11
     133: aload         11
     135: invokestatic  #54                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     138: istore_2
     139: iload_2
     140: iconst_0
     141: if_icmplt     148
     144: iconst_1
     145: goto          149
     148: iconst_0
     149: ifeq          210
     152: aload         6
     154: dup
     155: astore        12
     157: iload_2
     158: dup
     159: istore        13
     161: aload         12
     163: iload         13
     165: invokedynamic #79,  0             // InvokeDynamic #0:invoke:([II)Ljava/lang/Object;
     170: aload         5
     172: iload_2
     173: invokedynamic #79,  0             // InvokeDynamic #0:invoke:([II)Ljava/lang/Object;
     178: invokedynamic #82,  0             // InvokeDynamic #2:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     183: dup
     184: astore        14
     186: invokedynamic #68,  0             // InvokeDynamic #3:invoke:([IILjava/lang/Object;)Ljava/lang/Object;
     191: pop
     192: iload_2
     193: dup
     194: istore        15
     196: invokedynamic #85,  0             // InvokeDynamic #6:invoke:(I)Ljava/lang/Object;
     201: dup
     202: invokestatic  #54                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     205: istore_2
     206: pop
     207: goto          139
     210: iload_3
     211: dup
     212: istore        16
     214: invokedynamic #73,  0             // InvokeDynamic #4:invoke:(I)Ljava/lang/Object;
     219: dup
     220: invokestatic  #54                 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     223: istore_3
     224: pop
     225: goto          108
     228: ldc           #87                 // class java/lang/System
     230: invokedynamic #93,  0             // InvokeDynamic #7:getProperty:(Ljava/lang/Class;)Ljava/lang/Object;
     235: aload         6
     237: iconst_0
     238: invokedynamic #79,  0             // InvokeDynamic #0:invoke:([II)Ljava/lang/Object;
     243: ldc           #95                 // String
     245: invokedynamic #98,  0             // InvokeDynamic #2:invoke:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
     250: aload         6
     252: iload         4
     254: iconst_1
     255: invokedynamic #76,  0             // InvokeDynamic #5:invoke:(II)Ljava/lang/Object;
     260: invokedynamic #101,  0            // InvokeDynamic #0:invoke:([ILjava/lang/Object;)Ljava/lang/Object;
     265: invokedynamic #82,  0             // InvokeDynamic #2:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     270: invokedynamic #104,  0            // InvokeDynamic #8:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     275: pop
     276: return

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #116                // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class ary
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #122                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #124                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #116                // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #130                // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #124                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #133                // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn

  public groovy.lang.MetaClass getMetaClass();
    Code:
       0: aload_0
       1: getfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
       4: dup
       5: ifnull        9
       8: areturn
       9: pop
      10: aload_0
      11: dup
      12: invokevirtual #21                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
      15: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      18: aload_0
      19: getfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      22: areturn

  public void setMetaClass(groovy.lang.MetaClass);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
       5: return

  public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #140                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #143,  4          // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
      12: areturn

  public java.lang.Object getProperty(java.lang.String);
    Code:
       0: aload_0
       1: invokevirtual #140                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: invokeinterface #146,  3          // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
      11: areturn

  public void setProperty(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #140                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #151,  4          // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
      12: return
}

        

Static Compilation

          Compiled from "ary.groovy"
public class ary implements groovy.lang.GroovyObject {
  public static transient boolean __$stMC;

  public ary();
    Code:
       0: aload_0
       1: invokespecial #17                 // Method java/lang/Object."<init>":()V
       4: aload_0
       5: invokevirtual #21                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
       8: astore_1
       9: aload_1
      10: aload_0
      11: swap
      12: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      15: return

  public static void main(java.lang.String...);
    Code:
       0: ldc           #28                 // int 0
       2: istore_1
       3: ldc           #28                 // int 0
       5: istore_2
       6: ldc           #28                 // int 0
       8: istore_3
       9: aload_0
      10: iconst_0
      11: invokestatic  #34                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.objectArrayGet:([Ljava/lang/Object;I)Ljava/lang/Object;
      14: invokestatic  #40                 // Method org/codehaus/groovy/runtime/typehandling/ShortTypeHandling.castToString:(Ljava/lang/Object;)Ljava/lang/String;
      17: checkcast     #42                 // class java/lang/String
      20: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
      23: istore        4
      25: iload         4
      27: multianewarray #50,  1            // class "[I"
      31: astore        5
      33: iload         4
      35: multianewarray #50,  1            // class "[I"
      39: astore        6
      41: iconst_0
      42: istore        7
      44: iload         7
      46: istore_1
      47: iload_1
      48: iload         4
      50: if_icmpge     57
      53: iconst_1
      54: goto          58
      57: iconst_0
      58: ifeq          84
      61: iload_1
      62: iconst_1
      63: iadd
      64: istore        8
      66: aload         5
      68: iload_1
      69: iload         8
      71: invokestatic  #54                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArraySet:([III)V
      74: iload_1
      75: dup
      76: istore        9
      78: iconst_1
      79: iadd
      80: istore_1
      81: goto          47
      84: iconst_0
      85: istore        10
      87: iload         10
      89: istore_3
      90: iload_3
      91: sipush        1000
      94: if_icmpge     101
      97: iconst_1
      98: goto          102
     101: iconst_0
     102: ifeq          174
     105: iload         4
     107: iconst_1
     108: isub
     109: istore        11
     111: iload         11
     113: istore_2
     114: iload_2
     115: iconst_0
     116: if_icmplt     123
     119: iconst_1
     120: goto          124
     123: iconst_0
     124: ifeq          164
     127: iload_2
     128: istore        12
     130: aload         6
     132: dup
     133: iload         12
     135: invokestatic  #58                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     138: aload         5
     140: iload_2
     141: invokestatic  #58                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     144: iadd
     145: dup
     146: istore        13
     148: iload         12
     150: swap
     151: invokestatic  #54                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArraySet:([III)V
     154: iload_2
     155: dup
     156: istore        14
     158: iconst_1
     159: isub
     160: istore_2
     161: goto          114
     164: iload_3
     165: dup
     166: istore        15
     168: iconst_1
     169: iadd
     170: istore_3
     171: goto          90
     174: getstatic     #64                 // Field java/lang/System.out:Ljava/io/PrintStream;
     177: aload         6
     179: iconst_0
     180: invokestatic  #58                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     183: invokestatic  #68                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     186: ldc           #70                 // String
     188: invokestatic  #76                 // Method org/codehaus/groovy/runtime/StringGroovyMethods.plus:(Ljava/lang/Number;Ljava/lang/String;)Ljava/lang/String;
     191: aload         6
     193: iload         4
     195: iconst_1
     196: isub
     197: invokestatic  #58                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.intArrayGet:([II)I
     200: invokestatic  #68                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     203: invokestatic  #79                 // Method org/codehaus/groovy/runtime/StringGroovyMethods.plus:(Ljava/lang/CharSequence;Ljava/lang/Object;)Ljava/lang/String;
     206: invokevirtual #85                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
     209: return

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #98                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class ary
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #104                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #106                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #98                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #112                // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #106                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #115                // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn

  public groovy.lang.MetaClass getMetaClass();
    Code:
       0: aload_0
       1: getfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
       4: dup
       5: ifnull        9
       8: areturn
       9: pop
      10: aload_0
      11: dup
      12: invokevirtual #21                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
      15: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      18: aload_0
      19: getfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
      22: areturn

  public void setMetaClass(groovy.lang.MetaClass);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #23                 // Field metaClass:Lgroovy/lang/MetaClass;
       5: return

  public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #120                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #125,  4          // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
      12: areturn

  public java.lang.Object getProperty(java.lang.String);
    Code:
       0: aload_0
       1: invokevirtual #120                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: invokeinterface #130,  3          // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
      11: areturn

  public void setProperty(java.lang.String, java.lang.Object);
    Code:
       0: aload_0
       1: invokevirtual #120                // Method getMetaClass:()Lgroovy/lang/MetaClass;
       4: aload_0
       5: aload_1
       6: aload_2
       7: invokeinterface #135,  4          // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
      12: return
}