Java code analysis