/// <summary> /// Clones the instance using special context and returns cloned instance. /// </summary> /// <param name="context">Special context for providing references continuity.</param> /// <returns>Cloned instance.</returns> public RangeValue Clone(Dictionary <object, object> context) { if (context.ContainsKey(this)) { return((RangeValue)context[this]); } var result = new RangeValue(); context[this] = result; result.LeftBoundary = LeftBoundary?.Clone(context); result.RightBoundary = RightBoundary?.Clone(context); result.AppendAnnotations(this, context); return(result); }
/// <inheritdoc/> protected override ulong CalculateLongHashCode() { var result = base.CalculateLongHashCode(); if (LeftBoundary != null) { LeftBoundary.CheckDirty(); result ^= LeftBoundary.GetLongHashCode(); } if (RightBoundary != null) { RightBoundary.CheckDirty(); result ^= RightBoundary.GetLongHashCode(); } return(result); }