docs: def _resolve_value(self, name):
          """ Returns an appropriate value for the given name. """
          name = str(name)
          if name in self._metadata._meta.elements:
              element = self._metadata._meta.elements[name]
  
              # Look in instances for an explicit value
              if element.editable:
                  value = getattr(self, name)
                  if value:
                      return value
  
              # Otherwise, return an appropriate default value (populate_from)
              populate_from = element.populate_from
              if isinstance(populate_from, collections.Callable):
                  return populate_from(self, **self._populate_from_kwargs())
              elif isinstance(populate_from, Literal):
                  return populate_from.value
              elif populate_from is not NotSet:
                  return self._resolve_value(populate_from)
  
          # If this is not an element, look for an attribute on metadata
          try:
              value = getattr(self._metadata, name)
          except AttributeError:
              pass
          else:
              if isinstance(value, collections.Callable):
                  if getattr(value, '__self__', None):
                      return value(self)
                  else:
                      return value(self._metadata, obj=self)
              return value