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.

def __build_completer_map(cls):
        """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.
        """
        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