internal PathSegment(Substring segment, ChainSegment[] chain) : this() { IsNotEmpty = segment.Length != 0; IsParent = IsNotEmpty && segment == ".."; IsThis = IsNotEmpty && !IsParent && (segment == "." || Substring.EqualsIgnoreCase(segment, ThisSubstring)); PathChain = chain; _hashCode = GetHashCodeImpl(); }