internal ExtendedBy(By by) { by.CheckNotNull(nameof(by)); ExtendedBy byAsExtended = by as ExtendedBy; this.by = byAsExtended?.by ?? by; Description = this.by.ToString(); Options = byAsExtended?.Options?.Clone() ?? SearchOptions.Unsafely(); if (byAsExtended != null) { ElementName = byAsExtended.ElementName; ElementKind = byAsExtended.ElementKind; } }