protected override IEnumerable<MembersCollector> CollectElementsToProxyInternal(IProxyGenerationHook hook)
		{
			Debug.Assert(hook != null, "hook != null");

			var targetItem = new WrappedClassMembersCollector(targetType, scope) { Logger = Logger };
			targetItem.CollectMembersToProxy(hook);
			yield return targetItem;

			foreach (var @interface in interfaces)
			{
				var item = new InterfaceMembersOnClassCollector(@interface, scope,
				                                                true,
				                                                targetType.GetInterfaceMap(@interface)) { Logger = Logger };
				item.CollectMembersToProxy(hook);
				yield return item;
			}
		}
        protected override IEnumerable <MembersCollector> CollectElementsToProxyInternal(IProxyGenerationHook hook)
        {
            Debug.Assert(hook != null, "hook != null");

            var targetItem = new WrappedClassMembersCollector(targetType)
            {
                Logger = Logger
            };

            targetItem.CollectMembersToProxy(hook);
            yield return(targetItem);

            foreach (var @interface in interfaces)
            {
                var item = new InterfaceMembersOnClassCollector(@interface, true,
                                                                targetType.GetTypeInfo().GetRuntimeInterfaceMap(@interface))
                {
                    Logger = Logger
                };
                item.CollectMembersToProxy(hook);
                yield return(item);
            }
        }