diff --git a/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Reflective.java b/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Reflective.java
index 65a7e61..7df0e17 100644
--- a/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Reflective.java
+++ b/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Reflective.java
@@ -171,7 +171,7 @@
                 {
                     params.append(", ");
                 }
-                params.append(arg.getClass().getSimpleName());
+                params.append(arg == null ? "null" : arg.getClass().getSimpleName());
             }
 
             throw new IllegalArgumentException(String.format(
@@ -275,6 +275,13 @@
                 else
                 {
                     out[i] = coerce(session, target, types[i], in.get(0));
+                    
+                    if (out[i] == null && types[i].isArray() && in.size() > 0)
+                    {
+                        // don't coerce null to array FELIX-2432
+                        out[i] = NO_MATCH;
+                    }
+                    
                     if (out[i] != NO_MATCH)
                     {
                         in.remove(0);
diff --git a/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestParser2.java b/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestParser2.java
index 162b37d..a21e0a1 100644
--- a/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestParser2.java
+++ b/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestParser2.java
@@ -35,7 +35,7 @@
 
         assertEquals("file://wibble#tag", c.execute("echo file://wibble#tag"));
         assertEquals("file:", c.execute("echo file: //wibble#tag"));
-        
+
         assertEquals("PWD/*.java", c.execute("echo PWD/*.java"));
         try
         {
@@ -46,31 +46,37 @@
         {
             // expected
         }
-        
+
         assertEquals("ok", c.execute("// can't quote\necho ok\n"));
-        
+
         // quote in comment in closure
         assertEquals("ok", c.execute("x = { // can't quote\necho ok\n}; x"));
         assertEquals("ok", c.execute("x = {\n// can't quote\necho ok\n}; x"));
         assertEquals("ok", c.execute("x = {// can't quote\necho ok\n}; x"));
     }
 
+    public void testCoercion() throws Exception
+    {
+        Context c = new Context();
+        c.addCommand("echo", this);
+
+        // FELIX-2432
+        assertEquals("null x", c.execute("echo $expandsToNull x"));
+    }
+
     public CharSequence echo(Object args[])
     {
         if (args == null)
         {
-            return "";
+            return "null args!";
         }
 
         StringBuilder sb = new StringBuilder();
         for (Object arg : args)
         {
-            if (arg != null)
-            {
-                if (sb.length() > 0)
-                    sb.append(' ');
-                sb.append(arg);
-            }
+            if (sb.length() > 0)
+                sb.append(' ');
+            sb.append(String.valueOf(arg));
         }
         return sb.toString();
     }
