private static IBindingInfoBehaviorSyntax <TSource> WithParameter <TSource, TValue>(
     this IBindingInfoSyntax <TSource> syntax, DataConstant <TValue> constant, TValue value)
 {
     Should.NotBeNull(syntax, "syntax");
     syntax.Builder.Add(constant, value);
     return(syntax.GetOrAddSyntaxBuilder <IBindingInfoBehaviorSyntax <TSource>, object, TSource>());
 }
 public static IBindingInfoBehaviorSyntax<TSource> DisableEqualityChecking<TSource>([NotNull] this IBindingInfoSyntax<TSource> syntax, bool targetValue = true, bool sourceValue = true)
 {
     Should.NotBeNull(syntax, nameof(syntax));
     var behaviors = syntax.Builder.GetOrAddBehaviors();
     behaviors.Add(DisableEqualityCheckingBehavior.GetTargetBehavior(targetValue));
     behaviors.Add(DisableEqualityCheckingBehavior.GetSourceBehavior(sourceValue));
     return syntax.GetOrAddSyntaxBuilder<IBindingInfoBehaviorSyntax<TSource>, object, TSource>();
 }
 public static IBindingInfoBehaviorSyntax<TSource> HasStablePath<TSource>([NotNull] this IBindingInfoSyntax<TSource> syntax, bool value = true)
 {
     Should.NotBeNull(syntax, nameof(syntax));
     syntax.Builder.AddOrUpdate(BindingBuilderConstants.HasStablePath, value);
     return syntax.GetOrAddSyntaxBuilder<IBindingInfoBehaviorSyntax<TSource>, object, TSource>();
 }