anchor.diff:    store_kw_con(listener, # EVENT, \
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
       PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
  -    lexer->current_line, lexer->crlf); \
  +    lexer->current_line, lexer->eol); \
       if (lexer->content_end != 0) { \
         p = PTR_TO(content_end - 1); \
       } \
  
positive.code:     rb_str_new(ptr, len); 
  #endif
  
  #ifndef RSTRING_PTR
  #define RSTRING_PTR(s) (RSTRING(s)->ptr)
  #endif
  
negative.code:   size_t len = RSTRING_LEN(input_copy);
    
    if (count_char('\r', data) > (count_char('\n', data) / 2)) {
      lexer->eol = CRLF_FLAG;
    }
    
    if (len == 0) { 
      rb_raise(rb_eGherkinLexerError, "No content to lex.");
    } else {
  
      const char *p, *pe, *eof;
      int cs = 0;
      
      VALUE listener = rb_iv_get(self, "@listener");
      VALUE rows = Qnil;
      VALUE current_row = Qnil;
  
      p = data;
      pe = data + len;
      eof = pe;
  