1*f0340d8eSSorin Bascaimport java.util.List;
2*f0340d8eSSorin Basca
3*f0340d8eSSorin Bascapublic class JavaTest {
4*f0340d8eSSorin Basca    class MethodDeclaration {
5*f0340d8eSSorin Basca        public <T> List<T> getNodesByType(Class<T> clazz) {
6*f0340d8eSSorin Basca            return new ArrayList<T>();
7*f0340d8eSSorin Basca        }
8*f0340d8eSSorin Basca    }
9*f0340d8eSSorin Basca    class JavaParserFacade {
10*f0340d8eSSorin Basca        public Solved solve(MethodDeclaration method) {
11*f0340d8eSSorin Basca            return new Solved();
12*f0340d8eSSorin Basca        }
13*f0340d8eSSorin Basca    }
14*f0340d8eSSorin Basca    class Solved {
15*f0340d8eSSorin Basca        public boolean isSolved() {
16*f0340d8eSSorin Basca            return true;
17*f0340d8eSSorin Basca        }
18*f0340d8eSSorin Basca    }
19*f0340d8eSSorin Basca    private List<String> foo(MethodDeclaration methodDecl) {
20*f0340d8eSSorin Basca        return methodDecl
21*f0340d8eSSorin Basca                .getNodesByType(MethodDeclaration.class)
22*f0340d8eSSorin Basca                .stream()
23*f0340d8eSSorin Basca                .map(statement -> {
24*f0340d8eSSorin Basca                    try {
25*f0340d8eSSorin Basca                        return new JavaParserFacade().solve(statement);
26*f0340d8eSSorin Basca                    } catch (Throwable e) {
27*f0340d8eSSorin Basca                        return null;
28*f0340d8eSSorin Basca                    }
29*f0340d8eSSorin Basca                })
30*f0340d8eSSorin Basca                .filter(parsed -> parsed != null && parsed.isSolved());
31*f0340d8eSSorin Basca    }
32*f0340d8eSSorin Basca}