code: def __build_completer_map(cls):
          
          ret = {}
          for name in dir(cls):
              obj = getattr(cls, name)
              if iscompleter(obj):
                  for cmd in obj.__complete_targets__:
                      if cmd in ret.keys():
                          raise PyShellError("The command '{}' already has"
                                             " complter"
                                             " method '{}', cannot register a"
                                             " second method '{}'.".format( \
                                                      cmd, ret[cmd], obj.__name__))
                      ret[cmd] = obj.__name__
          return ret
docs: Build a mapping from command names to completer names.
  
          One command name maps to at most one completer method.
          Multiple command names can map to the same completer method.
  
          Only used by __init__() to initialize self._cmd_map. MUST NOT be used
          elsewhere.
  
          Raises:
              PyShellError: A command maps to multiple helper methods.