code: function parse( str , limit ) {
  	var v , runtime = {
  		i: 0
  		, depth: 0	//# noDepthTracking!
  		, depthLimit: limit || depthLimit   //# noDepthLimit!
  		, ancestors: []	//# noRefNotation!
  	} ;
  
  	if ( typeof str !== 'string' ) {
  		if ( str && typeof str === 'object' ) { str = str.toString() ; }
  		else { throw new TypeError( "Argument #0 should be a string or an object with a .toString() method" ) ; }
  	}
  
  	parseIdle( str , runtime ) ;
  
  	if ( runtime.i >= str.length ) { throw new SyntaxError( "Empty" ) ; }
  
  	v = parseValue( str , runtime ) ;
  	parseIdle( str , runtime ) ;
  
  	if ( runtime.i < str.length ) { throw new SyntaxError( "Unexpected " + str[ runtime.i ] ) ; }
  
  	return v ;
  }
docs: #depthLimitValue -> depthLimit