anchor.diff:    kw = ENCODED_STR_NEW(keyword_at, keyword_length);
     con = ENCODED_STR_NEW(at, length);
   
  -  VALUE split = unindent(con, start_col);
  -  
  +  unindent(con, start_col);
  +  
  +  VALUE split = rb_str_split(con, "\n");
  +
     name = rb_funcall(split, rb_intern("shift"), 0);
  -  desc = rb_ary_join(split, rb_str_new2( \
  -          eol == CRLF_FLAG ? CRLF : LF ));
  +  desc = rb_ary_join(split, rb_str_new2( "\n" ));
   
     if( name == Qnil ) 
     {
  
positive.code: raise_lexer_error(const char * at, int line)
  { 
    rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/aslakhellesoy/gherkin/lexingerror for more information.", line, at);
  }
  
  static int 
  count_char(char char_to_count, char *str) {
  
    int count = 0;
    int i = 0;
    while(str[i] != '\0') {
      if(str[i] == char_to_count) {
        count++;
      }
      i++;
    }
    return count;
  }
  
  static void lexer_init(lexer_state *lexer) {
  
negative.code:           int current_line)
  {
    VALUE con = ENCODED_STR_NEW(at, length);
  
    unindent(con, start_col);
  
    VALUE re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
    VALUE unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
    rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
    rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
    rb_funcall(listener, rb_intern("py_string"), 2, con, INT2FIX(current_line));
  