The method always synchronizes on the handlers object.
If handlers.get(forClass); returns a non-null value, synchronization could be avoided.
The current implementation:
public static <T> T getHandler(Class<?> forClass, ClassCache<T> handlers) throws CacheException {
T answer;
synchronized (handlers) {
answer = handlers.get(forClass);
if (answer == null) {