anchor.diff:          %% write exec;
       }
   
  -    private String keywordContent(String input, int p, int eof, int nextKeywordStart, int contentStart) {
  +    private String keywordContent(byte[] data, int p, int eof, int nextKeywordStart, int contentStart) {
         int endPoint = (nextKeywordStart == -1 || (p == eof)) ? p : nextKeywordStart;
  -      return input.substring(contentStart, endPoint);
  +      return substring(data, contentStart, endPoint);
       }
   
       private String multilineStrip(String text) {
  
positive.code:         return Pattern.compile("^ {0," + startCol + "}", Pattern.MULTILINE).matcher(text).replaceAll("");
      }
  
      private String currentLineContent(String input, int lastNewline) {
        return input.substring(lastNewline).trim();
      }
  }
  
negative.code:     }
  
      action store_pystring_content {
        String con = unindent(startCol, substring(data, contentStart, nextKeywordStart-1).replaceFirst("(\\r?\\n)?( )*\\Z", ""));
        listener.py_string(con, currentLine);
      }
  
      action store_feature_content {
        String con = multilineStrip(keywordContent(data, p, eof, nextKeywordStart, contentStart).trim());
        listener.feature(keyword, con, currentLine);
        if(nextKeywordStart != -1) p = nextKeywordStart - 1;
        nextKeywordStart = -1;
      }
  
      action store_background_content {
        String con = multilineStrip(keywordContent(data, p, eof, nextKeywordStart, contentStart));
        listener.background(keyword, con, currentLine);
        if(nextKeywordStart != -1) p = nextKeywordStart - 1;
        nextKeywordStart = -1;
      }
  
      action store_scenario_content {
        String con = multilineStrip(keywordContent(data, p, eof, nextKeywordStart, contentStart));
        listener.scenario(keyword, con, currentLine);
        if(nextKeywordStart != -1) p = nextKeywordStart - 1;
        nextKeywordStart = -1;
      }
  
      action store_scenario_outline_content {
        String con = multilineStrip(keywordContent(data, p, eof, nextKeywordStart, contentStart));
        listener.scenario_outline(keyword, con, currentLine);
        if(nextKeywordStart != -1) p = nextKeywordStart - 1;
        nextKeywordStart = -1;
      }
  
      action store_examples_content {
        String con = multilineStrip(keywordContent(data, p, eof, nextKeywordStart, contentStart));
        listener.examples(keyword, con, currentLine);
        if(nextKeywordStart != -1) p = nextKeywordStart - 1;
        nextKeywordStart = -1;
      }
  
      action store_step_content {
        listener.step(keyword, substring(data, contentStart, p).trim(), currentLine);
      }
  
      action store_comment_content {
        listener.comment(substring(data, contentStart, p).trim(), lineNumber);
      }
  
      action store_tag_content {
        listener.tag(substring(data, contentStart, p).trim(), currentLine);
      }
  
      action inc_line_number {
  