def add(name, other, send_events=True, reserved_names=(), duplicating=None,
    moving=None, loading=False, registry=None):
    """ Same as ``__setitem__``.

        If ``send_events`` is false, suppress the sending of folder events.
        Disallow the addition of the name provided is in the ``reserved_names``
        list.  If ``duplicating`` is not None, it must be the object being
        duplicated; when non-None, the ObjectWillBeAdded and ObjectAdded events
        sent will be marked as 'duplicating', which typically has the effect
        that the subobject's object id will be overwritten instead of reused.
        If ``registry`` is passed, it should be a Pyramid registry object;
        otherwise the :func:`pyramid.threadlocal.get_current_registry`
        function is used to look up the current registry.

        This method returns the name used to place the subobject in the
        folder (a derivation of ``name``, usually the result of
        ``self.check_name(name)``).
        """
