#vulnerable code 
                                public void testVarInputs() {
        ExpressionCompiler compiler = new ExpressionCompiler("test != foo && bo.addSomething(trouble); String bleh = foo; twa = bleh;");

        CompiledExpression c = compiler.compile();

        assertEquals(4, compiler.getInputs().size());

        assertTrue(compiler.getInputs().contains("test"));
        assertTrue(compiler.getInputs().contains("foo"));
        assertTrue(compiler.getInputs().contains("bo"));
        assertTrue(compiler.getInputs().contains("trouble"));

        assertEquals(2, compiler.getLocals().size());

        assertTrue(compiler.getLocals().contains("bleh"));
        assertTrue(compiler.getLocals().contains("twa"));

        assertEquals(String.class, DebugTools.determineType("bleh", c));
    } 
                            #location 6 
                            #vulnerability type NULL_DEREFERENCE
#fixed code
                                public void testVarInputs() {
        ExpressionCompiler compiler = new ExpressionCompiler("test != foo && bo.addSomething(trouble); String bleh = foo; twa = bleh;");

        CompiledExpression c = compiler.compile();

        ParserContext pCtx = compiler.getParserContextState();

        assertEquals(4, pCtx.getInputs().size());

        assertTrue(pCtx.getInputs().containsKey("test"));
        assertTrue(pCtx.getInputs().containsKey("foo"));
        assertTrue(pCtx.getInputs().containsKey("bo"));
        assertTrue(pCtx.getInputs().containsKey("trouble"));

        assertEquals(2, pCtx.getVariables().size());

        assertTrue(pCtx.getVariables().containsKey("bleh"));
        assertTrue(pCtx.getVariables().containsKey("twa"));

        assertEquals(String.class, DebugTools.determineType("bleh", c));
    }