Requires

		Sets the require rules used to validate the Parent

		Arguments:
			require {dict} -- A dictionary expressing requirements of fields

		Raises:
			ValueError

		Returns:
			None

def requires(self, require=None):
		"""Requires

		Sets the require rules used to validate the Parent

		Arguments:
			require {dict} -- A dictionary expressing requirements of fields

		Raises:
			ValueError

		Returns:
			None
		"""

		# If require is None, this is a getter
		if require is None:
			return self._requires

		# If it's not a valid dict
		if not isinstance(require, dict):
			raise ValueError('__require__')

		# Go through each key and make sure it goes with a field
		for k,v in iteritems(require):

			# If the field doesn't exist
			if k not in self._nodes:
				raise ValueError('__require__[%s]' % str(k))

			# If the value is a string
			if isinstance(v, basestring):
				v = [v]

			# Else if it's not a list type
			elif not isinstance(v, (tuple,list)):
				raise ValueError('__require__[%s]' % str(k))

			# Make sure each required field also exists
			for s in v:
				if s not in self._nodes:
					raise ValueError('__require__[%s]: %s' % (str(k), str(v)))

			# If it's all good
			self._requires[k] = v