public void testBreakpointsAcrossComments2() {
    ParserContext ctx = new ParserContext();
    ctx.setSourceFile("test2.mv");
    ctx.setDebugSymbols(true);

    ExpressionCompiler compiler = new ExpressionCompiler(
            "// This is a comment\n" +                  // 1
                    "//Second comment line\n" +         // 2
                    "//Third Comment Line\n" +          // 3
                    "\n" +                              // 4
                    "//Test\n" +                        // 5
                    "System.out.println('4');\n" +      // 6
                    "//System.out.println('5'); \n" +    // 7
                    "a = 0;\n" +                        // 8
                    "b = 1;\n" +                        // 9
                    " a + b", ctx);                          // 10


    CompiledExpression compiled = compiler.compile();

    MVELRuntime.registerBreakpoint("test2.mv", 6);
    MVELRuntime.registerBreakpoint("test2.mv", 8);
    MVELRuntime.registerBreakpoint("test2.mv", 9);
    MVELRuntime.registerBreakpoint("test2.mv", 10);

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

    Debugger testDebugger = new Debugger() {
      public int onBreak(Frame frame) {
        System.out.println("Breakpoint [source:" + frame.getSourceName() + "; line:" + frame.getLineNumber() + "]");
        breaked.add(frame.getLineNumber());
        return 0;
      }
    };

    MVELRuntime.setThreadDebugger(testDebugger);

    assertEquals(1, MVEL.executeDebugger(compiled, null, new MapVariableResolverFactory(createTestMap())));
    assertEquals("did not break at expected lines", Make.Set.<Integer>$()._(6)._(8)._(9)._(10)._(), breaked);
  }