docs: def documentation(self, add_to=None):
          """Produces general documentation for the interface"""
          doc = OrderedDict if add_to is None else add_to
  
          usage = self.interface.spec.__doc__
          if usage:
              doc['usage'] = usage
          if getattr(self, 'requires', None):
              doc['requires'] = [getattr(requirement, '__doc__', requirement.__name__) for requirement in self.requires]
          doc['outputs'] = OrderedDict()
          doc['outputs']['format'] = self.outputs.__doc__
          doc['outputs']['content_type'] = self.outputs.content_type
          parameters = [param for param in self.parameters if not param in ('request', 'response', 'self')
                                                          and not param in ('api_version', 'body')
                                                          and not param.startswith('hug_')
                                                          and not hasattr(param, 'directive')]
          if parameters:
              inputs = doc.setdefault('inputs', OrderedDict())
              types = self.interface.spec.__annotations__
              for argument in parameters:
                  kind = types.get(argument, text)
                  if getattr(kind, 'directive', None) is True:
                      continue
  
                  input_definition = inputs.setdefault(argument, OrderedDict())
                  input_definition['type'] = kind if isinstance(kind, str) else kind.__doc__
                  default = self.defaults.get(argument, None)
                  if default is not None:
                      input_definition['default'] = default
  
          return doc