anchor.diff:      con = rb_str_new(PTR_TO(content_start), LEN(content_start, p));
       rb_funcall(con, rb_intern("strip!"), 0);
   
  -    rb_ary_push(lexer->current_row, con);
  +    rb_ary_push(current_row, con);
     }
   
     action start_row {
  -    lexer->current_row = rb_ary_new();    
  +    current_row = rb_ary_new();
     }  
   
     action store_row {
  -    rb_ary_push(lexer->rows, lexer->current_row);
  +    rb_ary_push(rows, current_row);
     }
   
     action store_table {
  -    rb_funcall(lexer->listener, rb_intern("table"), 2, lexer->rows, INT2FIX(lexer->current_line));
  +    rb_funcall(lexer->listener, rb_intern("table"), 2, rows, INT2FIX(lexer->current_line));
     }
   
     action end_feature {
  
positive.code:   lexer->last_newline = 0;
    lexer->final_newline = 0;
    lexer->start_col = 0;
    lexer->rows = rb_ary_new();
    lexer->current_row = rb_ary_new();
  }
  
  static VALUE CLexer_alloc(VALUE klass)
  
negative.code:     const char *p, *pe, *eof;
      int cs = lexer->cs;
      
      VALUE rows = rb_ary_new();
      VALUE current_row = rb_ary_new();
      
      p = data;
      pe = data + len;
      eof = pe;
  