public bool Equals(Coordinates other)
        {
            var resultOfNaNCheck = ComparerUtils.IsNaNPointComparer(this, other, EqualsCoordinates);

            if (resultOfNaNCheck.HasValue)
            {
                return(resultOfNaNCheck.Value);
            }

            return(EqualsCoordinates(other));
        }
        public override bool Equals(T xObservation, T yObservation)
        {
            var baseEqualityCompareResult = DefaulValueEquals(xObservation, yObservation);

            if (baseEqualityCompareResult.HasValue)
            {
                return(baseEqualityCompareResult.Value);
            }

            var resultOfNaNCheck = ComparerUtils.IsNaNPointComparer(xObservation.ObservationPoint, yObservation.ObservationPoint, EqualsCoordinatesOfObservations);

            if (resultOfNaNCheck.HasValue)
            {
                return(resultOfNaNCheck.Value);
            }

            return(EqualsCoordinatesOfObservations(xObservation.ObservationPoint, yObservation.ObservationPoint));
        }