anchor.diff:    rb_funcall(listener, rb_intern("scenario_outline"), 3, kw, con, INT2FIX(current_line)); 
   }
   
  -static void store_background_content(VALUE listener, const char *keyword_at, size_t keyword_length, const char *at, size_t length, int current_line)
  -{
  -  VALUE con = Qnil, kw = Qnil;
  -  kw = rb_str_new(keyword_at, keyword_length);
  -  con = rb_str_new(at, length);
  -  con = multiline_strip(con);
  -  rb_funcall(con, rb_intern("strip!"), 0);
  -  rb_funcall(kw, rb_intern("strip!"), 0);
  -  rb_funcall(listener, rb_intern("background"), 3, kw, con, INT2FIX(current_line)); 
  -}
  -
   static void store_examples_content(VALUE listener, const char *keyword_at, size_t keyword_length, const char *at, size_t length, int current_line)
   {
     VALUE con = Qnil, kw = Qnil;
  
positive.code:   }
    
    action store_background_content {
  		store_background_content(listener, 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);
  
      if (lexer->content_end != 0) {
        p = PTR_TO(content_end - 1);
      }
      lexer->content_end = 0;
    }
    
    action store_scenario_content {
  
negative.code: #define MARK(M, P) (lexer->M = (P) - data)
  #define PTR_TO(P) (data + lexer->P)
  
  #define STORE_KW_CON(EVENT) \
      VALUE con = Qnil, kw = Qnil; \
      kw = rb_str_new(PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1))); \
      con = rb_str_new(PTR_TO(content_start), LEN(content_start, PTR_TO(content_end))); \
      con = multiline_strip(con); \
      rb_funcall(con, rb_intern("strip!"), 0); \
      rb_funcall(kw, rb_intern("strip!"), 0); \
      rb_funcall(listener, rb_intern(#EVENT), 3, kw, con, INT2FIX(lexer->current_line)); \
      if (lexer->content_end != 0) { \
        p = PTR_TO(content_end - 1); \
      } \
      lexer->content_end = 0;
   
  typedef struct lexer_state {
    int content_len;
    int line_number;
  