code: private LazyNode getOptionalFieldToken(String key){
  		LazyNode child=root.child;
  		while(child!=null){
  			if(keyMatch(key,child)){
  				return child.child;
  			}
  			child=child.next;
  		}
  		return null;
  	}
docs: Fields for an object are attached as children on the token representing
  the object itself. This method finds the correct field for a given key
  and returns its first child - the child being the value for that field.
  This is a utility method used internally to extract field values.
  
  @param key the name of the desired field
  @return the first child of the matching field token if one exists, null otherwise