docs: def getname(exprresolver):
      """Get expression resolver name.
  
      Expression resolver name is given by the attribute __resolver__.
      If not exist, then the it is given by the attribute __name__.
      Otherwise, given by the __class__.__name__ attribute.
  
      :raises: TypeError if exprresolver is not callable."""
  
      result = None
  
      if not callable(exprresolver):
          raise TypeError('Expression resolver must be a callable object.')
  
      result = getattr(
          exprresolver, __RESOLVER__, getattr(
              exprresolver, '__name__', getattr(
                  exprresolver.__class__, '__name__'
              )
          )
      )
  
      return result