public TType Merge <TType>(TType @base, TType left, TType right) { ConflictContainer conflicts = new ConflictContainer(); IDiff <TType> patch = this.Partial.MergeDiffs( this.Partial.Diff(@base, left), this.Partial.Diff(@base, right), conflicts ); if (conflicts.HasConflicts) { ConflictResolver <TType> resolver = new ConflictResolver <TType>(patch, conflicts); this.Partial.ResolveConflicts(resolver); patch = resolver.Finish(); } return(this.Partial.ApplyPatch(@base, patch)); }