class EnhancedComponentConfigurator extends BasicComponentConfigurator {

    public EnhancedComponentConfigurator() {
        converterLookup = new EnhancedConverterLookup();
    }

    @Override
    public void configureComponent(
            final Object component,
            final PlexusConfiguration configuration,
            final ExpressionEvaluator evaluator,
            final ClassRealm realm,
            final ConfigurationListener listener)
            throws ComponentConfigurationException {
        try {
            ClassRealmConverter.pushContextRealm(realm);

            this.configureComponent(component, configuration, evaluator, (ClassLoader) realm, listener);
        } finally {
            ClassRealmConverter.popContextRealm();
        }
    }

    public void configureComponent(
            Object component,
            PlexusConfiguration configuration,
            ExpressionEvaluator evaluator,
            ClassLoader loader,
            ConfigurationListener listener)
            throws ComponentConfigurationException {<FILL_FUNCTION_BODY>}
}

        new EnhancedConfigurationConverter()
                .processConfiguration(
                        converterLookup,
                        component,
                        loader, //
                        configuration,
                        evaluator,
                        listener);
    
<methods>public void <init>() ,public void configureComponent(java.lang.Object, org.codehaus.plexus.configuration.PlexusConfiguration, org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator, org.codehaus.plexus.classworlds.realm.ClassRealm, org.codehaus.plexus.component.configurator.ConfigurationListener) throws org.codehaus.plexus.component.configurator.ComponentConfigurationException<variables>