code: public static RuntimeDelegate getInstance() {
  		RuntimeDelegate result = RuntimeDelegate.CACHED_DELEGATE.get();
  		if (result != null) {
  			return result;
  		}
  		synchronized(RuntimeDelegate.CACHED_DELEGATE) {
  			result=RuntimeDelegate.CACHED_DELEGATE.get();
  			if(result==null) {
  				RuntimeDelegate.CACHED_DELEGATE.set(findDelegate());
  				result=RuntimeDelegate.CACHED_DELEGATE.get();
  			}
  			return result;
  		}
  	}
docs: Obtain a {@code RuntimeDelegate} instance. If an instance had not already
  been created and set via {@link #setInstance(RuntimeDelegate)}, the first
  invocation will create an instance which will then be cached for future
  use.
  
  <p>
  The algorithm used to locate the RuntimeDelegate subclass to use consists
  of the following steps:
  </p>
  <ul>
  <li>
  If a resource with the name of
  {@code META-INF/services/org.ldp4j.server.data.spi.RuntimeDelegate} exists, then
  its first line, if present, is used as the UTF-8 encoded name of the
  implementation class.</li>
  <li>
  If the $java.home/lib/ldp4j-server-data.properties file exists and it is readable by
  the {@code java.util.Properties.load(InputStream)} method and it contains
  an entry whose key is {@code org.ldp4j.server.data.spi.RuntimeDelegate}, then the
  value of that entry is used as the name of the implementation class.</li>
  <li>
  If a system property with the name
  {@code org.ldp4j.server.data.spi.RuntimeDelegate} is defined, then its value is
  used as the name of the implementation class.</li>
  <li>
  Finally, a default implementation class name is used.</li>
  </ul>
  
  @return an instance of {@code RuntimeDelegate}.