public virtual void AddReferenceTo(RangeAddress rangeAddress) { if (Address.CollidesWith(rangeAddress) || _referencedBy.Exists(x => x.CollidesWith(rangeAddress))) { throw new CircularReferenceException("Circular reference detected at " + rangeAddress.ToString()); } _references.Add(rangeAddress); }