def evaluate(expr)
      if will_capture?(expr)
        handler_class = @node_handlers[expr[0]]
        handler_arguments = expr[1]
        hash_of_args = {}
        # Use 1..-1 to skip the curly brace symbol
        expr[1][1..-1].map do | e |
          # The name of the command is the first element, always
          hash_of_args[e[0]] = e[1]
        end
        
        # Instantiate the handler with the options
        handler_instance = handler_class.new(hash_of_args)
        
        # Both return and yield it
        yield handler_instance if block_given?
        handler_instance
      end
    end
def evaluate(expr)
      if will_capture?(expr)
        handler_class = @node_handlers[expr[0]]
        handler_arguments = expr[1]
        hash_of_args = {}
        # Use 1..-1 to skip the curly brace symbol
        expr[1][1..-1].map do | e |
          # The name of the command is the first element, always
          hash_of_args[e[0]] = e[1]
        end
        
        # Instantiate the handler with the options
        handler_instance = handler_class.new(hash_of_args)
        
        # Both return and yield it
        yield handler_instance if block_given?
        handler_instance
      end
    end
Evaluates a single Nuke TCL command, and if it is a node constructor
 and a class with a corresponding name has been added using add_node_handler_class
 the class will be instantiated and yielded to the block. The instance will also be returned
 at the end of the method. This method evaluates one expression at a time
 (it's more of a pattern matcher really)