public override T this[string name] { get { using (PSObject.memberResolution.TraceScope("Lookup", new object[0])) { PSMemberInfo info; object mshOwner; if (string.IsNullOrEmpty(name)) { throw PSTraceSource.NewArgumentException("name"); } if (this.mshOwner != null) { PSMemberInfoInternalCollection <PSMemberInfo> internals; this.EnsureReservedMemberIsLoaded(name); mshOwner = this.mshOwner; if (PSObject.HasInstanceMembers(this.mshOwner, out internals)) { info = internals[name]; T local = info as T; if (local != null) { PSObject.memberResolution.WriteLine("Found PSObject instance member: {0}.", new object[] { name }); return(local); } } } else { info = this.memberSetOwner.InternalMembers[name]; mshOwner = this.memberSetOwner.instance; T local2 = info as T; if (local2 != null) { PSObject.memberResolution.WriteLine("Found PSMemberSet member: {0}.", new object[] { name }); info.ReplicateInstance(mshOwner); return(local2); } } if (mshOwner != null) { mshOwner = PSObject.AsPSObject(mshOwner); foreach (CollectionEntry <T> entry in this.collections) { T local3 = entry.GetMember((PSObject)mshOwner, name); if (local3 != null) { if (entry.ShouldCloneWhenReturning) { local3 = (T)local3.Copy(); } if (entry.ShouldReplicateWhenReturning) { local3.ReplicateInstance(mshOwner); } return(local3); } } } return(default(T)); } } }