protected bool EqualsImpl(Symbol other) { return Kind == other.Kind && string.Equals(Name, other.Name) && (Parent == null) == (other.Parent == null) && (Parent == null || Parent.EqualsImpl(other.Parent)); }