private synchronized Template lookupImpl(Type targetType,
final boolean forceLoad, final boolean forceBuild, final boolean fallbackDefault) {
Template tmpl;
if (targetType instanceof ParameterizedType) {
ParameterizedType pType = (ParameterizedType) targetType;
// ParameterizedType is not a Class<?>?
tmpl = lookupGenericImpl(pType);
if (tmpl != null) {
return tmpl;
}
try {
tmpl = parent.lookupGenericImpl(pType);
if (tmpl != null) {
return tmpl;
}
} catch (NullPointerException e) { // ignore
}
targetType = pType.getRawType();
}
tmpl = cache.get(targetType);
if (tmpl != null) {
return tmpl;