/*
 * This is a sample file.
 */

public class ThisIsASampleClass extends C1 implements I1, I2, I3, I4, I5 {
  private int f1 = 1
  private String field2 = ""
  void m(int i1, long i2, short i3, double i4, byte i5, boolean i6, float i7) {}
  public static void longerMethod() throws Exception1, Exception2, Exception3 {
// todo something
    int
i = 0
    int var1 = 1; int var2 = 2
    new int[]{-1000,-100,-10,-1,0,1,10,100,1000,10000,100000}
    foo1(0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057)
    foo2 "a", "ab", "abc", "abcd", "abcde", "abcdef", "abcdefg", "abcdefgh"
    int x = (3 + 4 + 5 + 6) * (7 + 8 + 9 + 10) * (11 + 12 + 13 + 14 + 0xFFFFFFFF)
    String s1, s2, s3
    s1 = s2 = s3 = "012345678901456"
    assert i + j + k + l + n+ m <= 2 : "assert description"
    int y = 2 > 3 ? 7 + 8 + 9 : 11 + 12 + 13
    super.getFoo().foo().getBar().bar()
    def oneLineLambda = (a,b,c)->{print b}
    def multiLineLambda = (a,b,c)->{
      def d = a
      print d
    }

    label:
    if (2 < 3) return else if (2 > 3) return else return
    for (int i = 0; i < 0xFFFFFF; i += 2) System.out.println(i)
    print([
       l1: expr1,
       label2: expr2
    ])
    while (x < 50000) x++
    do x++ while (x < 50000)
    do x++
    while (x < 50000)
    switch (a) {
    case 0:
      doCase0()
      break
    default:
      doDefault()
    }
  }
    public static void test()
        throws Exception {
        foo.foo().bar("arg1",
                      "arg2")
        new Object() {}
    }
    class TestInnerClass {}
    interface TestInnerInterface {}
}

try (def a = r(); def b = r2; def c; def d = r4()) {}catch(Exception e) {processException(e)}finally{processFinally()}

enum Breed {
    Dalmatian(), Labrador(), Dachshund()
}

@Annotation1 @Annotation2 @Annotation3(param1="value1", param2="value2") @Annotation4 class Foo {
    @Annotation1 @Annotation3(param1="value1", param2="value2") public static void foo(){
    }
    @Annotation1 @Annotation3(param1="value1", param2="value2") public static int myFoo
    public void method(@Annotation1 @Annotation3(param1="value1", param2="value2") final int param){
        @Annotation1 @Annotation3(param1="value1", param2="value2") final int localVariable
    }
}
