code: def bind(self, destination='', source='', routing_key='',
               arguments=None):
          
          if not compatibility.is_string(destination):
              raise AMQPInvalidArgument('destination should be a string')
          elif not compatibility.is_string(source):
              raise AMQPInvalidArgument('source should be a string')
          elif not compatibility.is_string(routing_key):
              raise AMQPInvalidArgument('routing_key should be a string')
          elif arguments is not None and not isinstance(arguments, dict):
              raise AMQPInvalidArgument('arguments should be a dict or None')
  
          bind_frame = pamqp_exchange.Bind(destination=destination,
                                           source=source,
                                           routing_key=routing_key,
                                           arguments=arguments)
          return self._channel.rpc_request(bind_frame)
docs: Bind an Exchange.
  
          :param str destination: Exchange name
          :param str source: Exchange to bind to
          :param str routing_key: The routing key to use
          :param dict arguments: Bind key/value arguments
  
          :raises AMQPInvalidArgument: Invalid Parameters
          :raises AMQPChannelError: Raises if the channel encountered an error.
          :raises AMQPConnectionError: Raises if the connection
                                       encountered an error.
  
          :rtype: dict