1*f0340d8eSSorin Bascaclass AnonymousClassDeclarations {
2*f0340d8eSSorin Basca
3*f0340d8eSSorin Basca    static class DoFn<I,O> {
4*f0340d8eSSorin Basca        static class ProcessContext {
5*f0340d8eSSorin Basca            public Long innerClassMethod() {}
6*f0340d8eSSorin Basca        }
7*f0340d8eSSorin Basca
8*f0340d8eSSorin Basca        enum MyEnum {
9*f0340d8eSSorin Basca            E1, E2, E3
10*f0340d8eSSorin Basca        }
11*f0340d8eSSorin Basca
12*f0340d8eSSorin Basca        public void process(ProcessContext context) {}
13*f0340d8eSSorin Basca    }
14*f0340d8eSSorin Basca
15*f0340d8eSSorin Basca    static class Transform<I,O> {}
16*f0340d8eSSorin Basca
17*f0340d8eSSorin Basca    static class ParDo {
18*f0340d8eSSorin Basca        static <I,O> Transform<I,O> of(DoFn<I,O> doFn) {
19*f0340d8eSSorin Basca            return null;
20*f0340d8eSSorin Basca        }
21*f0340d8eSSorin Basca    }
22*f0340d8eSSorin Basca
23*f0340d8eSSorin Basca    void fooBar1() {
24*f0340d8eSSorin Basca        ParDo.of(new DoFn<Integer,Long>() {});
25*f0340d8eSSorin Basca    }
26*f0340d8eSSorin Basca
27*f0340d8eSSorin Basca    void fooBar2() {
28*f0340d8eSSorin Basca        ParDo.of(new DoFn<Integer,Long>() {
29*f0340d8eSSorin Basca            public void process(ProcessContext c){
30*f0340d8eSSorin Basca                return c.innerClassMethod();
31*f0340d8eSSorin Basca            }
32*f0340d8eSSorin Basca        });
33*f0340d8eSSorin Basca    }
34*f0340d8eSSorin Basca
35*f0340d8eSSorin Basca    void fooBar3() {
36*f0340d8eSSorin Basca        ParDo.of(new DoFn<Integer,Long>() {
37*f0340d8eSSorin Basca
38*f0340d8eSSorin Basca            void callAnnonClassInnerMethod() {}
39*f0340d8eSSorin Basca
40*f0340d8eSSorin Basca            public void process(ProcessContext c) {
41*f0340d8eSSorin Basca                callAnnonClassInnerMethod();
42*f0340d8eSSorin Basca            }
43*f0340d8eSSorin Basca        });
44*f0340d8eSSorin Basca    }
45*f0340d8eSSorin Basca
46*f0340d8eSSorin Basca     void fooBar4() {
47*f0340d8eSSorin Basca        ParDo.of(new DoFn<Integer,Long>() {
48*f0340d8eSSorin Basca
49*f0340d8eSSorin Basca            void callAnnonClassInnerMethod() {}
50*f0340d8eSSorin Basca
51*f0340d8eSSorin Basca            public void process(ProcessContext c) {
52*f0340d8eSSorin Basca                MyEnum.E3.toString();
53*f0340d8eSSorin Basca            }
54*f0340d8eSSorin Basca        });
55*f0340d8eSSorin Basca    }
56*f0340d8eSSorin Basca
57*f0340d8eSSorin Basca    void fooBar5() {
58*f0340d8eSSorin Basca        ParDo.of(new DoFn<Integer,Long>() {
59*f0340d8eSSorin Basca
60*f0340d8eSSorin Basca            void callAnnonClassInnerMethod() {}
61*f0340d8eSSorin Basca
62*f0340d8eSSorin Basca            enum MyInnerEnum {
63*f0340d8eSSorin Basca                E1, E2, E3
64*f0340d8eSSorin Basca            }
65*f0340d8eSSorin Basca            public void process(ProcessContext c) {
66*f0340d8eSSorin Basca                MyInnerEnum.E3.toString();
67*f0340d8eSSorin Basca            }
68*f0340d8eSSorin Basca        });
69*f0340d8eSSorin Basca    }
70*f0340d8eSSorin Basca
71*f0340d8eSSorin Basca    void fooBar6() {
72*f0340d8eSSorin Basca        new DoFn.ProcessContext() {}.innerClassMethod();
73*f0340d8eSSorin Basca    }
74*f0340d8eSSorin Basca
75*f0340d8eSSorin Basca}
76