class DefaultColorization implements Colorizer {

    @Override
    public String colorize(String message) {
        if (message == null || "".equals(message)) {
            return message;
        }

        String cleanMessage = stripAnsiCodes(message);
        if (cleanMessage.contains(BUILD_SUCCESS)) {
            return cleanMessage.replace(BUILD_SUCCESS, configuration.onBuildSuccess().a(BUILD_SUCCESS).reset().toString());
        }
        if (cleanMessage.contains(BUILD_FAILURE)) {
            return cleanMessage.replace(BUILD_FAILURE, configuration.onBuildFailure().a(BUILD_FAILURE).reset().toString());
        }
        if (cleanMessage.contains(SUCCESS)) {
            return cleanMessage.replace(SUCCESS, configuration.onSuccess().a(SUCCESS).reset().toString());
        }
        if (cleanMessage.contains(FAILURE)) {
            return cleanMessage.replace(FAILURE, configuration.onFailure().a(FAILURE).reset().toString());
        }
        if (cleanMessage.contains(SKIPPED)) {
            return cleanMessage.replace(SKIPPED, configuration.onSkipped().a(SKIPPED).reset().toString());
        }
        Matcher matcher = PLUGIN_EXECUTION.matcher(cleanMessage);
        if (matcher.matches()) {
            return configuration.onPluginExecution().a(matcher.group(1)).reset().toString()
                + configuration.onPluginExecutionModuleName().a(matcher.group(2)).reset().toString()
                + configuration.onPluginExecution().a(matcher.group(3)).reset().toString();
        }
        if (isModuleHeader(cleanMessage)) {
            return configuration.onModuleHeader().a(cleanMessage).reset().toString();
        }

        return cleanMessage;
    }

    public  DefaultColorization();
    public  DefaultColorization(ConfigurableColor configuration);
    public  DefaultColorization(ConfigurableColor configuration, CurrentMavenVersion currentVersion);

}