public bool IsSafeToLoad(Type type) { if (!type.IsGenericType) return true; if (type.GetGenericTypeDefinition() == typeof(IIndirect<>)) return false; if (type.GetGenericArguments().Any(t => !IsSafeToLoad(t))) return false; return true; }