public static function buildCustom($name, $extension, $optional = false)
    {
        $returnValue = null;

        
    	// Camelize the name to find it in the checks folder.
        $name = explode('_', $name);
        for ($i = 0; $i < count($name); $i++){
            $name[$i] = ucfirst($name[$i]);
        }
        $name = implode('', $name);
        $checkClassName = "${extension}_install_checks_${name}";
        
        // Instanciate the Component.
        try{
            $checkClass = new ReflectionClass($checkClassName);
            $returnValue = $checkClass->newInstanceArgs(array("custom_${extension}_${name}", $optional));
        }
        catch (LogicException $e){
	        $msg = "Cannot instantiate custom check '${name}' for extension '${extension}': ";
	        $msg .= $e->getMessage();
	        throw new common_configuration_ComponentFactoryException($msg);
        }
        catch (ReflectionException $e){
        	$msg = "Cannot instantiate custom check '${name}' for extension '${extension}': ";
	        $msg .= $e->getMessage();
	        throw new common_configuration_ComponentFactoryException($msg);
        }
        

        return $returnValue;
    }