public virtual IPlumber <T1, T2, TId> Create <T1, T2, TId>(ISynchSourcesConfig <T1, T2, TId> source, IRuleContainer <TId> rules) where TId : IEquatable <TId> { var preprocessor = CreatePreprocessor(source, rules); var synchronizationResolvers = rules.GetTypedResolvers(source).ToList(); var plumber = new ItemMatchPipelinePlumber <T1, T2, TId>(source, synchronizationResolvers, preprocessor); if (Appender != null) { plumber.Appender = Appender; } return(plumber); }