public InjectForm()
		{
			InitializeComponent();
			_mappings = new Dictionary<object, InjectType[]>();
			_extraTypeSupported = new List<InjectType>();
			_extraTypeSupported.AddRange(new[]
			{
				InjectType.Class,
				InjectType.Property,
				InjectType.Field,
				InjectType.Event,
				InjectType.Resource
			});

			var ade = new AssemblyDefinitionEditor();
			var adetypes = new[]
			{
				InjectType.Class,
				InjectType.Interface,
				InjectType.Struct,
				InjectType.Enum,
				InjectType.AssemblyReference,
				InjectType.Resource
			};

			_mappings.Add(ade, adetypes);
			OwnerType.Items.Add(ade);

			var tde = new TypeDefinitionEditor();
			var tdetypes = new[]
			{
				InjectType.Class,
				InjectType.Interface,
				InjectType.Struct,
				InjectType.Enum,
				InjectType.Constructor,
				InjectType.Method,
				InjectType.Property,
				InjectType.Field,
				InjectType.Event
			};

			_mappings.Add(tde, tdetypes);
			OwnerType.Items.Add(tde);

			InitializeOwnerType(ade, tde);
		}
		private void InitializeOwnerType(AssemblyDefinitionEditor ade, TypeDefinitionEditor tde)
		{
			var handler = PluginFactory.GetInstance().Package.ActiveHandler;
			if (handler == null)
				return;

			var current = handler.TargetObject;
			if (current is AssemblyDefinition)
			{
				OwnerType.SelectedItem = ade;
				ade.SelectedOperand = current as AssemblyDefinition;
			}
			else if (current is ModuleDefinition)
			{
				OwnerType.SelectedItem = ade;
				ade.SelectedOperand = (current as ModuleDefinition).Assembly;
			}
			else if (current is TypeDefinition)
			{
				OwnerType.SelectedItem = tde;
				tde.SelectedOperand = current as TypeDefinition;
			}
			else if (current is MemberReference)
			{
				var mref = current as MemberReference;
				if (!(mref.DeclaringType is TypeDefinition))
					return;

				OwnerType.SelectedItem = tde;
				tde.SelectedOperand = mref.DeclaringType as TypeDefinition;
			}
		}