docs: public static String matchImplicit(Pointer ptr, int len) {
         String tag = "str";
         int cs;
         int act;
         int have = 0;
         int nread = 0;
         int p=ptr.start;
         int pe = p+len;
         int eof = p+len;
         int tokstart = -1;
         int tokend = -1;
  
         byte[] data = ptr.buffer;
         if(len == 0) {
           data = new byte[]{(byte)'~'};
           p = 0;
           pe = 1;
           eof = 1;
         }
                
  
  // line 319 "src/main/org/yecht/ImplicitScanner2.java"
  	{
  	cs = ImplicitScanner_start;
  	}
  // line 104 "src/main/org/yecht/ImplicitScanner2.rl"
  
  
  // line 326 "src/main/org/yecht/ImplicitScanner2.java"
  	{
  	int _klen;
  	int _trans = 0;
  	int _keys;
  	int _goto_targ = 0;
  
  	_goto: while (true) {
  	switch ( _goto_targ ) {
  	case 0:
  	if ( p == pe ) {
  		_goto_targ = 4;
  		continue _goto;
  	}
  	if ( cs == 0 ) {
  		_goto_targ = 5;
  		continue _goto;
  	}
  case 1:
  	_match: do {
  	_keys = _ImplicitScanner_key_offsets[cs];
  	_trans = _ImplicitScanner_index_offsets[cs];
  	_klen = _ImplicitScanner_single_lengths[cs];
  	if ( _klen > 0 ) {
  		int _lower = _keys;
  		int _mid;
  		int _upper = _keys + _klen - 1;
  		while (true) {
  			if ( _upper < _lower )
  				break;
  
  			_mid = _lower + ((_upper-_lower) >> 1);
  			if ( data[p] < _ImplicitScanner_trans_keys[_mid] )
  				_upper = _mid - 1;
  			else if ( data[p] > _ImplicitScanner_trans_keys[_mid] )
  				_lower = _mid + 1;
  			else {
  				_trans += (_mid - _keys);
  				break _match;
  			}
  		}
  		_keys += _klen;
  		_trans += _klen;
  	}
  
  	_klen = _ImplicitScanner_range_lengths[cs];
  	if ( _klen > 0 ) {
  		int _lower = _keys;
  		int _mid;
  		int _upper = _keys + (_klen<<1) - 2;
  		while (true) {
  			if ( _upper < _lower )
  				break;
  
  			_mid = _lower + (((_upper-_lower) >> 1) & ~1);
  			if ( data[p] < _ImplicitScanner_trans_keys[_mid] )
  				_upper = _mid - 2;
  			else if ( data[p] > _ImplicitScanner_trans_keys[_mid+1] )
  				_lower = _mid + 2;
  			else {
  				_trans += ((_mid - _keys)>>1);
  				break _match;
  			}
  		}
  		_trans += _klen;
  	}
  	} while (false);
  
  	_trans = _ImplicitScanner_indicies[_trans];
  	cs = _ImplicitScanner_trans_targs[_trans];
  
  case 2:
  	if ( cs == 0 ) {
  		_goto_targ = 5;
  		continue _goto;
  	}
  	if ( ++p != pe ) {
  		_goto_targ = 1;
  		continue _goto;
  	}
  case 4:
  	if ( p == eof )
  	{
  	int __acts = _ImplicitScanner_eof_actions[cs];
  	int __nacts = (int) _ImplicitScanner_actions[__acts++];
  	while ( __nacts-- > 0 ) {
  		switch ( _ImplicitScanner_actions[__acts++] ) {
  	case 0:
  // line 56 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "null";}
  	break;
  	case 1:
  // line 57 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "bool#yes";}
  	break;
  	case 2:
  // line 58 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "bool#no";}
  	break;
  	case 3:
  // line 59 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "int#hex";}
  	break;
  	case 4:
  // line 60 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "int#oct";}
  	break;
  	case 5:
  // line 61 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "int#base60";}
  	break;
  	case 6:
  // line 62 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "int";}
  	break;
  	case 7:
  // line 63 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "float#fix";}
  	break;
  	case 8:
  // line 64 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "float#exp";}
  	break;
  	case 9:
  // line 65 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "float#base60";}
  	break;
  	case 10:
  // line 66 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "float#inf";}
  	break;
  	case 11:
  // line 67 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "float#neginf";}
  	break;
  	case 12:
  // line 68 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "float#nan";}
  	break;
  	case 13:
  // line 69 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "timestamp#ymd";}
  	break;
  	case 14:
  // line 70 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "timestamp#iso8601";}
  	break;
  	case 15:
  // line 71 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "timestamp#spaced";}
  	break;
  	case 16:
  // line 72 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "timestamp";}
  	break;
  	case 17:
  // line 73 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "default";}
  	break;
  	case 18:
  // line 74 "src/main/org/yecht/ImplicitScanner2.rl"
  	{tag = "merge";}
  	break;
  // line 489 "src/main/org/yecht/ImplicitScanner2.java"
  		}
  	}
  	}
  
  case 5:
  	}
  	break; }
  	}
  // line 106 "src/main/org/yecht/ImplicitScanner2.rl"
  
         return tag;
      }