 		}
 
 		/**
-		 * Returns a description of the given type containing its constructor, injection points
-		 * and post construct and pre destroy hooks
-		 *
-		 * @param type The type to describe
-		 * @return The TypeDescription containing all information the injector has about the type
-		 */
-		public function getTypeDescription(type : Class) : TypeDescription
-		{
-			return _reflector.describeInjections(type);
+		 * Uses the <code>TypeDescription</code> the injector associates with the given instance's
+		 * type to iterate over all <code>[PreDestroy]</code> methods in the instance, supporting
+		 * automated destruction.
+		 *
+		 * @param instance The instance to destroy
+		 */
+		public function destroyInstance(instance : Object) : void
+		{
+			if (!instance)
+			{
+				return;
+			}
+			const type : Class = _reflector.getClass(instance);
+			const typeDescription : TypeDescription = getTypeDescription(type);
+			for (var preDestroyHook : PreDestroyInjectionPoint = typeDescription.preDestroyMethods;
+			     preDestroyHook; preDestroyHook = PreDestroyInjectionPoint(preDestroyHook.next))
+			{
+				preDestroyHook.applyInjection(instance, type, this);
+			}
 		}
 
 		/**

			return _applicationDomain;
		}

		public function addTypeDescription(type : Class, description : TypeDescription) : void
		{
			_classDescriptor.addDescription(type, description);
		}



		}

		/**
		 * Indicates whether the injector can supply a response for the specified dependency either
		 * by using a mapping of its own or by querying one of its ancestor injectors.
		 *
