public ProjectedDestructuringPolicy(Func<Type, bool> canApply, Func<object, object> projection)
{
if (canApply == null) throw new ArgumentNullException(nameof(canApply));
if (projection == null) throw new ArgumentNullException(nameof(projection));
_canApply = canApply;
_projection = projection;
}