code: def _compile_signature(self, iexec, call_name):
          
          if iexec is not None:
              summary = iexec.summary
              if isinstance(iexec, Function):
                  summary = iexec.returns + "| " + iexec.summary
              elif isinstance(iexec, Subroutine) and len(iexec.modifiers) > 0:
                  summary = ", ".join(iexec.modifiers) + " | " + iexec.summary
              elif isinstance(iexec, Interface):
                  summary = iexec.describe()
              else:
                  summary = iexec.summary
  
              #Add the name of the module who owns the method. Useful in case the
              #same executable is defined in multiple modules, but only one is
              #referenced in the current context.
              if iexec.parent is not None:
                  summary += " | MODULE: {}".format(iexec.module.name)
              else:
                  summary += " | BUILTIN"
  
              return dict(
                  params=[p.name for p in iexec.ordered_parameters],
                  index=0,
                  call_name=call_name,
                  description=summary,
              )        
          else:
              return []
docs: Compiles the signature for the specified executable and returns
          as a dictionary.