code: def _child(details):
  	
  
  	# If the details are a list
  	if isinstance(details, list):
  
  		# Create a list of options for the key
  		return OptionsNode(details)
  
  	# Else if we got a dictionary
  	elif isinstance(details, dict):
  
  		# If array is present
  		if '__array__' in details:
  			return ArrayNode(details)
  
  		# Else if we have a hash
  		elif '__hash__' in details:
  			return HashNode(details)
  
  		# Else if we have a type
  		elif '__type__' in details:
  
  			# If the type is a dictionary or list, this is a complex type
  			if isinstance(details['__type__'], (dict,list)):
  				return _child(details['__type__'])
  
  			# Else it's just a Node
  			else:
  				return Node(details)
  
  		# Else it's most likely a parent
  		else:
  			return Parent(details)
  
  	# Else if we got a string
  	elif isinstance(details, basestring):
  
  		# Use the value as the type
  		return Node(details)
  
  	# Else raise an error
  	else:
  		raise TypeError('details')
docs: Child
  
  	A private function to figure out the child node type
  
  	Arguments:
  		details {dict} -- A dictionary describing a data point
  
  	Returns:
  		_NodeInterface