public EqualityTester(T targetObject) { this.TargetObject = targetObject; this.Analysis = TypeAnalysis <T> .Analyze(); this.Rules.AddRange(this.Analysis.TypeLevelRules); if (!typeof(T).IsValueType) { this.Rules.AddRange(this.Analysis.GetNotEqualRules(TargetObject, default(T), "inequality to null")); this.Rules.AddRange(this.Analysis.GetEqualityOfTwoNulls()); } }