public override INode Visit(IReturnType type, IType typeToInstantiate) { DomReturnType copyFrom = (DomReturnType)type; string decoratedName = copyFrom.DecoratedFullName; IReturnType result = LookupReturnType(decoratedName, type, typeToInstantiate); IType curType = currentType; while (result == null && curType != null) { result = LookupReturnType(curType.DecoratedFullName + "." + decoratedName, type, typeToInstantiate); curType = curType.DeclaringType; } result = result ?? (IReturnType)base.Visit(type, typeToInstantiate); return(dom != null?dom.GetSharedReturnType(result) : result); }