in phoenix-queryserver/src/main/java/org/apache/phoenix/util/InstanceResolver.java [46:58]
public static <T> T getSingleton(Class<T> clazz, T defaultInstance) {
Object obj = RESOLVED_SINGLETONS.get(clazz);
if(obj != null) {
return (T)obj;
}
if (defaultInstance != null && !clazz.isInstance(defaultInstance)) throw new IllegalArgumentException("defaultInstance is not of type " + clazz.getName());
final Object o = resolveSingleton(clazz, defaultInstance);
obj = RESOLVED_SINGLETONS.putIfAbsent(clazz, o);
if(obj == null) {
obj = o;
}
return (T)obj;
}