public static void destroy(Destroyable d) {
        if (d != null) {
            try {
                d.destroy();
            } catch (Throwable t) {
                if (log.isDebugEnabled()) {
                    String msg = "Unable to cleanly destroy instance [" + d + "] of type [" + d.getClass().getName() + "].";
                    log.debug(msg, t);
                }
            }
        }
    }
Calls {@link #init(Object) init} for each object in the collection.  If the collection is {@code null} or empty,
this method returns quietly.

@param c the collection containing objects to {@link #init init}.
@throws ShiroException if unable to initialize one or more instances.
@since 0.9
src/main/java/org/apache/shiro/lang/util/LifecycleUtils.java