private static Debug valueOfDebug() {
        String val = System.getProperty(SYSTEM_PROPERTY_NAME_DEBUG);
        if (val != null) {
            val = val.toUpperCase();
            if (Boolean.valueOf(val)) return Debug.SIMPLE;
            try {
                return Debug.valueOf(val);
            } catch (IllegalArgumentException e) { }
        }
        return Debug.SIMPLE;
    }
<p>This interface defines a reference counted resource. This is the parent interface of {@link RequestHandler},
{@link ClientProvider} and {@link ServerProvider}, and is used by jDISC to appropriately signal resources as they
become candidates for deallocation. As a {@link ContainerBuilder} is {@link
ContainerActivator#activateContainer(ContainerBuilder) activated}, all its components are {@link #refer() retained}
by that {@link Container}. Once a {@link DeactivatedContainer} terminates, all of that Container's components are
{@link ResourceReference#close() released}. This resource tracking allows an Application to implement a significantly
simpler scheme for managing its resources than would otherwise be possible.</p>

<p>Objects are created with an initial reference count of 1, representing the reference held by the object creator.

<p>You should not really think about the management of resources in terms of reference counting, instead think of it
in terms of resource ownership. You retain a resource to prevent it from being destroyed while you are using it, and
you release a resource once you are done using it.</p>

@author Simon Thoresen Hult
jdisc_core/src/main/java/com/yahoo/jdisc/SharedResource.java