protected function invokeBindingInitializers($typeName, $object, $initializers = NULL)
	{
		foreach((array)$initializers as $initializer)
		{
			if(is_array($initializer))
			{
				$ref = new \ReflectionMethod(is_object($initializer[0]) ? get_class($initializer[0]) : $initializer[0], $initializer[1]);
			}
			else
			{
				$ref = new \ReflectionFunction($initializer);
			}
	
			$args = $this->populateArguments($ref, 1, [], new InjectionPoint($typeName, $ref->name));
				
			switch(count($args))
			{
				case 0:
					$object = $initializer($object) ?: $object;
					break;
				case 1:
					$object = $initializer($object, $args[0]) ?: $object;
					break;
				case 2:
					$object = $initializer($object, $args[0], $args[1]) ?: $object;
					break;
				case 3:
					$object = $initializer($object, $args[0], $args[1], $args[2]) ?: $object;
					break;
				case 4:
					$object = $initializer($object, $args[0], $args[1], $args[2], $args[3]) ?: $object;
					break;
				default:
					$object = call_user_func_array($initializer, array_merge([$object], $args)) ?: $object;
			}
		}
		
		return $object;
	}