Makes sure that any additional imported names in the specified package
    that were decorated in the context of a *different* package still get
    redirected to the decorated objects.

    Args:
        package: package object to examine for compliance.

    Examples:
    When `scipy` is imported, it imports most of `numpy` automatically and then
    has references to the original, *undecorated* `numpy` functions. We use
    :func:`postfix` to set the `scipy` references to the decorated `numpy`
    functions.

    >>> import scipy
    >>> import acorn.numpy
    >>> from acorn.logging.decoration import postfix, decorate
    >>> decorate(scipy)
    >>> postfix(scipy)

    When we call :func:`decorate` on `scipy`, the references to `numpy`
    functions are ignored, because they don't belong to the `scipy`
    package. This filtering is a feature to prevent `acorn` repeatedly visiting
    commonly used modules that are imported.

def postfix(package):
    """Makes sure that any additional imported names in the specified package
    that were decorated in the context of a *different* package still get
    redirected to the decorated objects.

    Args:
        package: package object to examine for compliance.

    Examples:
    When `scipy` is imported, it imports most of `numpy` automatically and then
    has references to the original, *undecorated* `numpy` functions. We use
    :func:`postfix` to set the `scipy` references to the decorated `numpy`
    functions.

    >>> import scipy
    >>> import acorn.numpy
    >>> from acorn.logging.decoration import postfix, decorate
    >>> decorate(scipy)
    >>> postfix(scipy)

    When we call :func:`decorate` on `scipy`, the references to `numpy`
    functions are ignored, because they don't belong to the `scipy`
    package. This filtering is a feature to prevent `acorn` repeatedly visiting
    commonly used modules that are imported.
    """
    #This time we don't have to go recursively; we can just look at top-level
    #objects in the package.
    global decorating
    origdecor = decorating
    decorating = True
    
    packsplit = _split_object(package, package.__name__,
                              resplit=True, packincl=["numpy"], skipext=True)
    for ot, ol in packsplit.items():
        for name, obj in ol:
            if hasattr(obj, "__acorn__") or hasattr(obj, "__acornext__"):
                continue

            #The object could have been decorated directly, *or* it could have
            #been extended first, and then decorated.
            key = id(obj)
            fqdn_ = _fqdn(obj, False)
            if fqdn_ is None: # pragma: no cover
                continue

            packname = fqdn_.split('.')[0]
            if key not in _decorated_o[packname] and key in _extended_objs:
                xobj = _extended_objs[key]
                key = id(xobj)

            if key in _decorated_o[packname]:
                target = _decorated_o[packname][key]
                if target is not None and isinstance(target, CallingDecorator):
                    clog = target(fqdn_, packname, None)
                    _safe_setattr(clog, "__acornext__", obj)
                    _update_attrs(clog, obj)

                    setattr(package, name, clog)
                    dmsg = "Postfix decorated {} to {}."
                    msg.info(dmsg.format(name, target), 3)
    decorating = origdecor