private Template<Type> lookupGenericArrayType(Type targetType) {
        // TODO GenericArrayType is not a Class<?> => buildArrayTemplate
        if (! (targetType instanceof GenericArrayType)) {
            return null;
        }

        GenericArrayType genericArrayType = (GenericArrayType) targetType;
        Template<Type> tmpl = lookupGenericArrayTypeImpl(genericArrayType);
        if (tmpl != null) {
            return tmpl;
        }

        try {
            tmpl = parent.lookupGenericArrayTypeImpl(genericArrayType);
            if (tmpl != null) {
                return tmpl;
            }
        } catch (NullPointerException e) { // ignore
        }

        return null;
    }