docs: def log_player_trades_with_port(self, player, to_port, port, to_player):
          """
          :param player: catan.game.Player
          :param to_port: list of tuples, [(int, game.board.Terrain), (int, game.board.Terrain)]
          :param port: catan.board.Port
          :param to_player: list of tuples, [(int, game.board.Terrain), (int, game.board.Terrain)]
          """
          self._log('{0} trades '.format(player.color))
  
          # to_port items
          self._log('[')
          for i, (num, res) in enumerate(to_port):
              if i > 0:
                  self._log(', ')
              self._log('{0} {1}'.format(num, res.value))
          self._log(']')
  
          self._log(' to port {0} for '.format(port.type.value))
  
          # to_player items
          self._log('[')
          for i, (num, res) in enumerate(to_player):
              if i > 0:
                  self._log(', ')
              self._log('{0} {1}'.format(num, res.value))
          self._log(']')
  
          self._log('\n')