docs: def bind(self, interface, to=None, scope=None):
          """Bind an interface to an implementation.
  
          :param interface: Interface or :func:`Key` to bind.
          :param to: Instance or class to bind to, or an explicit
               :class:`Provider` subclass.
          :param scope: Optional :class:`Scope` in which to bind.
          """
          if type(interface) is type and issubclass(interface, (BaseMappingKey, BaseSequenceKey)):
              return self.multibind(interface, to, scope=scope)
          key = BindingKey.create(interface)
          self._bindings[key] = self.create_binding(interface, to, scope)