code: def _collect_unrecognized_values(self, scheme, data, ancestors):
          
          if not isinstance(ancestors, OrderedDict):
              raise TypeError("ancestors must be an OrderedDict. type: {0} was passed.".format(type(ancestors)))
  
          if not isinstance(scheme, dict):
              raise TypeError('scheme must be a dict. type: {0} was passed'.format(type(scheme)))
  
          unrecognized_values = {}
          if isinstance(data, dict):
              pruned_scheme = [key for key in scheme.keys() if key not in RESERVED_SCHEME_KEYS and key[0] not in RESERVED_SCHEME_KEYS]
  
              for key, value in six.iteritems(data):
                  if key in pruned_scheme:
                      continue
  
                  unrecognized_values[key] = value
  
              validations = scheme.get('is')
              if validations and 'one_of' in validations:
                  for nested_scheme in validations['one_of']:
                      if isinstance(nested_scheme, dict):
  
                          updated_scheme = self._update_scheme(nested_scheme, ancestors)
                          pruned_scheme = [key for key in updated_scheme.keys() if key not in RESERVED_SCHEME_KEYS and key[0] not in RESERVED_SCHEME_KEYS]
                          for key in pruned_scheme:
                              if key in unrecognized_values:
                                  del unrecognized_values[key]
          else:
              # TODO: maybe return an error?
              pass
  
          return unrecognized_values
docs: Looks for values that aren't defined in the scheme and returns a dict with any unrecognized values found.
  
          :param scheme: A :dict:, The scheme defining the validations.
          :param data: A :dict: user supplied for this specific property.
          :param ancestors: A :OrderedDict: that provides a history of its ancestors.
          :rtype: A :dict: of unrecognized configuration properties.