public void testBreakpointsAcrossComments() {
    String expression = "/** This is a comment\n" +  // 1
            " *  Second comment line\n" +        // 2
            " *  Third Comment Line\n" +         // 3
            " */\n" +                         // 4
            "System.out.println('4');\n" +   // 5
            "System.out.println('5');\n" +   // 6
            "a = 0;\n" +                     // 7
            "b = 1;\n" +                    // 8
            "a + b";                        // 9

    ParserContext ctx = new ParserContext();
    ctx.setSourceFile("test2.mv");
    ctx.setDebugSymbols( true );

    ExpressionCompiler compiler = new ExpressionCompiler(expression, ctx);

    System.out.println( "Expression:\n------------");
    System.out.println( expression);
    System.out.println( "------------");

    CompiledExpression compiled = compiler.compile();

    MVELRuntime.registerBreakpoint("test2.mv", 9);

    final Set<Integer> linesEncountered = new HashSet<Integer>();

    Debugger testDebugger = new Debugger() {

      public int onBreak(Frame frame) {
        linesEncountered.add(frame.getLineNumber());

        System.out.println("Breakpoint Encountered [source:" + frame.getSourceName() + "; line:" + frame.getLineNumber() + "]");
        System.out.println("vars:" + frame.getFactory().getKnownVariables());
        System.out.println("Resume Execution");
        return 0;
      }
    };

    MVELRuntime.setThreadDebugger(testDebugger);

    assertEquals(1, MVEL.executeDebugger(compiled, null, new MapVariableResolverFactory(createTestMap())));
    assertTrue("Debugger did not break at line 9", linesEncountered.contains(9));
  }