Add an agent with given address to current :attr:`connections` with
        given information.

        Does nothing if address is already in :attr:`connections`. Given
        ``**kwargs`` are stored as key-value pairs to ``connections[addr]``
        dictionary.

        :param str addr:
            Address of the agent to be added
        :returns:
            ``True`` if the agent was successfully added, ``False`` otherwise.

def add_connection(self, addr, **kwargs):
        """Add an agent with given address to current :attr:`connections` with
        given information.

        Does nothing if address is already in :attr:`connections`. Given
        ``**kwargs`` are stored as key-value pairs to ``connections[addr]``
        dictionary.

        :param str addr:
            Address of the agent to be added
        :returns:
            ``True`` if the agent was successfully added, ``False`` otherwise.
        """
        if addr not in self._connections:
            self.connections[addr] = {}
            for k, v in kwargs.items():
                self.connections[addr][k] = v
            return True
        return False