 		
 		//----------------------         Private / Protected Methods        ----------------------//
 		private function gatherFieldInjectionPoints(
-				fields : Object, lastInjectionPoint : InjectionPoint) : InjectionPoint
-		{
-			for each (var field : Object in fields)
-			{
-				var injectParameters : Array = extractInjectParameters(field.metadata);
+				fields : Array, lastInjectionPoint : InjectionPoint) : InjectionPoint
+		{
+			if (!fields)
+			{
+				return lastInjectionPoint;
+			}
+			const length : uint = fields.length;
+			for (var i : int = 0; i < length; i++)
+			{
+				var field : Object = fields[i];
+				var injectParameters : Array =
+						field.metadata && extractInjectParameters(field.metadata);
 				if (!injectParameters)
 				{
 					continue;


		private function extractOptionalFlag(injectParameters : Array) : Boolean
		{
			for each (var parameter : Object in injectParameters)
			{
				if (parameter.key == 'optional')
				{
					return parameter.value == 'true' || parameter.value == '1';

				lastInjectionPoint : InjectionPoint) : InjectionPoint
		{
			const postConstructMethodPoints : Array = [];
			const methods : Array = _traits.methods;
			if (!methods)
			{
				return lastInjectionPoint;
			}
			var length : uint = methods.length;
			for (var i : int = 0; i < length; i++)
			{
				var method : Object = methods[i];
				var postConstructParameters : Array =
						method.metadata && extractPostConstructParameters(method.metadata);
				if (!postConstructParameters)
				{
					continue;
