protected function callFactoryMethod($typeName, $factory, $methodName, array $resolvers = NULL, InjectionPointInterface $point = NULL)
	{
		$ref = new \ReflectionMethod(get_class($factory), $methodName);
		
		foreach($ref->getParameters() as $param)
		{
			if(Configuration::class === $this->getParamType($param))
			{
				$resolvers[$param->name] = $this->config->getConfig(str_replace('\\', '.', $typeName));
			}
		}
		
		$args = $this->populateArguments($ref, 0, $resolvers, $point);
		
		switch(count($args))
		{
			case 0:
				return $factory->$methodName();
			case 1:
				return $factory->$methodName($args[0]);
			case 2:
				return $factory->$methodName($args[0], $args[1]);
			case 3:
				return $factory->$methodName($args[0], $args[1], $args[2]);
			case 4:
				return $factory->$methodName($args[0], $args[1], $args[2], $args[3]);
		}
		
		return call_user_func_array([$factory, $methodName], $args);
	}