public bool TryGet <TKey, TComplex>(TKey key, out TComplex complexType) where TComplex : class { if (!IsRoot) { return(_parent.TryGet(key, out complexType)); } List <object> mappedTargets; if (_mappedObjectsBySource.TryGetValue(key, out mappedTargets)) { complexType = (TComplex)mappedTargets.FirstOrDefault(t => t is TComplex); return(complexType != null); } complexType = default(TComplex); return(false); }