code: def print_help(self, session, command=None):
          
          if command:
              # Single command mode
              if command in self._commands:
                  # Argument is a name space
                  self.__print_namespace_help(session, command)
                  was_namespace = True
              else:
                  was_namespace = False
  
              # Also print the name of matching commands
              try:
                  # Extract command name space and name
                  possibilities = self.get_ns_commands(command)
              except ValueError as ex:
                  # Unknown command
                  if not was_namespace:
                      # ... and no name space were matching either -> error
                      session.write_line(str(ex))
                      return False
              else:
                  # Print the help of the found command
                  if was_namespace:
                      # Give some space
                      session.write_line("\n\n")
  
                  for namespace, cmd_name in possibilities:
                      self.__print_namespace_help(session, namespace, cmd_name)
          else:
              # Get all name spaces
              namespaces = list(self._commands.keys())
              namespaces.remove(DEFAULT_NAMESPACE)
              namespaces.sort()
              namespaces.insert(0, DEFAULT_NAMESPACE)
  
              first_ns = True
              for namespace in namespaces:
                  if not first_ns:
                      # Add empty lines
                      session.write_line("\n\n")
  
                  # Print the help of all commands
                  self.__print_namespace_help(session, namespace)
                  first_ns = False
  
          return None
docs: Prints the available methods and their documentation, or the
          documentation of the given command.