 		//----------------------         Private / Protected Methods        ----------------------//
 		private function createRule(requestType : Class) : InjectionRule
 		{
-			return new InjectionRule(this, requestType);
+			const rule : InjectionRule = new InjectionRule(this, requestType);
+			_mappings[getQualifiedClassName(requestType)] = rule;
+			return rule;
+		}
+
+		private function applyInjectionPoints(target : Object, injectionPoints : Array) : void
+		{
+			var length : int = injectionPoints.length;
+			for (var i : int = 0; i < length; i++)
+			{
+				var injectionPoint : InjectionPoint = injectionPoints[i];
+				injectionPoint.applyInjection(target, this);
+			}
 		}
 	}
 }
					_classDescriptor.getDescription(getConstructor(target));

			var injectionPoints : Array = injecteeDescription.injectionPoints;
			var length : int = injectionPoints.length;
			for (var i : int = 0; i < length; i++)
			{
				var injectionPoint : InjectionPoint = injectionPoints[i];
				injectionPoint.applyInjection(target, this);
			}
		}

		public function getInstance(type : Class) : *
		{
			var mapping : InjectionRule = getMapping(type);
			if (!mapping || !mapping.hasProvider())
			{
				return instantiateUnmapped(type);
			}
			return mapping.apply(this);
		}
		
		public function createChildInjector(applicationDomain : ApplicationDomain = null) : Injector

				throw new InjectorError("Can't instantiate interface " + getQualifiedClassName(type));
			}
			var instance : * = injectionPoint.applyInjection(type, this);
			applyInjectionPoints(instance, typeDescription.injectionPoints);
			return instance;
		}

