public override bool Equals(object obj) { if (obj == null) { return(false); } if (obj is System.DBNull) { return(false); } Step step = (Step)obj; if (!this.Number.Equals(step.Number)) { return(false); } if (!this.PieceType.Equals(step.PieceType)) { return(false); } if (!this.GameSide.Equals(step.GameSide)) { return(false); } if (!UtilityEquals.CollectionsEquals <Enums.Action>(this.Actions, step.Actions)) { return(false); } if (!UtilityEquals.PairEquals(this.TargetPosition, step.TargetPosition)) { return(false); } if (!UtilityEquals.PairEquals(this.SourcePosition, step.SourcePosition)) { return(false); } if (!this.PromotionPieceType.Equals(step.PromotionPieceType)) { return(false); } if (!UtilityEquals.PairEquals(this.Parent, step.Parent)) { return(false); } if (!UtilityEquals.CollectionsEquals <IItem>(this.Items, step.Items)) { return(false); } return(true); }