/// <summary>
            /// Allows overriding the way structural equality is applied to particular members.
            /// </summary>
            /// <param name="predicate">
            /// A predicate based on the <see cref="ISubjectInfo"/> of the subject that is used to identify the property for which the
            /// override applies.
            /// </param>
            public TSelf When(Expression <Func <ISubjectInfo, bool> > predicate)
            {
#pragma warning disable 618
                options.Using(new AssertionRule <TMember>(predicate, action));
                return(options);

#pragma warning restore 618
            }
 /// <summary>
 ///     Allows overriding the way structural equality is applied to particular members.
 /// </summary>
 /// <param name="predicate">
 ///     A predicate based on the <see cref="IMemberInfo" /> of the subject that is used to identify the property for which
 ///     the
 ///     override applies.
 /// </param>
 public TSelf When(Expression <Func <IMemberInfo, bool> > predicate)
 {
     options.Using(new AssertionRule <TMember>(predicate, action));
     return(options);
 }