diff --git a/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/AbstractComponentConfigurator.java b/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/AbstractComponentConfigurator.java
index 066196c..84a8b7f 100644
--- a/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/AbstractComponentConfigurator.java
+++ b/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/AbstractComponentConfigurator.java
@@ -13,6 +13,7 @@
 package org.codehaus.plexus.component.configurator;
 
 import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 
 import org.codehaus.classworlds.ClassRealmAdapter;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
@@ -53,18 +54,19 @@
         final Class<?> clazz = getClass();
         try
         {
+            Method configureMethod;
             try
             {
-                clazz.getMethod( "configureComponent", Object.class, PlexusConfiguration.class,
+                configureMethod = clazz.getMethod( "configureComponent", Object.class, PlexusConfiguration.class,
                                  ExpressionEvaluator.class, org.codehaus.classworlds.ClassRealm.class,
-                                 ConfigurationListener.class )
-                /* ---> */.invoke( this, component, configuration, evaluator, legacyRealm, listener );
+                                 ConfigurationListener.class );
+                configureMethod.invoke( this, component, configuration, evaluator, legacyRealm, listener );
             }
             catch ( final NoSuchMethodException ignore )
             {
-                clazz.getMethod( "configureComponent", Object.class, PlexusConfiguration.class,
-                                 ExpressionEvaluator.class, org.codehaus.classworlds.ClassRealm.class )
-                /* ---> */.invoke( this, component, configuration, evaluator, legacyRealm );
+                configureMethod = clazz.getMethod( "configureComponent", Object.class, PlexusConfiguration.class,
+                                 ExpressionEvaluator.class, org.codehaus.classworlds.ClassRealm.class );
+                configureMethod.invoke( this, component, configuration, evaluator, legacyRealm );
             }
         }
         catch ( final InvocationTargetException e )
diff --git a/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/MapOrientedComponentConfigurator.java b/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/MapOrientedComponentConfigurator.java
index 7f6a2bf..ecf4174 100644
--- a/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/MapOrientedComponentConfigurator.java
+++ b/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/MapOrientedComponentConfigurator.java
@@ -31,10 +31,10 @@
     {
         if ( component instanceof MapOrientedComponent )
         {
-            ( (MapOrientedComponent) component ).setComponentConfiguration(
-            /* <--- */(Map<?, ?>) new MapConverter().fromConfiguration( converterLookup, configuration, Map.class,
+            Object map = new MapConverter().fromConfiguration( converterLookup, configuration, Map.class,
                                                                         component.getClass(), realm, evaluator,
-                                                                        listener ) );
+                                                                        listener );
+            ( (MapOrientedComponent) component ).setComponentConfiguration( (Map<?, ?>) map );
         }
         else
         {
