public static ChainableEqualizer <T> Then <T, U>(this ChainableEqualizer <T> chainable, Func <T, U> keySelector)
 {
     return(chainable.Then(new SelectorEqualizer <T, U>(keySelector)));
 }
 public static ChainableEqualizer <T> Then <T>(this ChainableEqualizer <T> chainable, Func <T, T, bool> equals, Func <T, int> hasher)
 {
     return(chainable.Then(new DelegatedEqualizer <T>(equals, hasher)));
 }