diff --git a/lib/execjs/external_runtime.rb b/lib/execjs/external_runtime.rb
index <HASH>..<HASH> 100644
--- a/lib/execjs/external_runtime.rb
+++ b/lib/execjs/external_runtime.rb
@@ -85,21 +85,19 @@ module ExecJS
           end
         end
 
-        if MultiJson.respond_to?(:load)
+        if MultiJson.respond_to?(:dump)
           def json_decode(obj)
             MultiJson.load(obj)
           end
-        else
-          def json_decode(obj)
-          MultiJson.decode(obj)
-          end
-        end
 
-        if MultiJson.respond_to?(:dump)
           def json_encode(obj)
             MultiJson.dump(obj)
           end
         else
+          def json_decode(obj)
+            MultiJson.decode(obj)
+          end
+
           def json_encode(obj)
             MultiJson.encode(obj)
           end
Fix invalid MultiJson API detection (closes #<I>)

`#load` is defined in Kernel and inherited in every object, thus Object.respond_to?(:load) will always return true.

MultiJson switched to load/dump from decode/encode. Thus it's safe to use a single check for both encoding and decoding methods.