# File lib/parslet/pattern.rb, line 87
  def element_match_hash(tree, exp, bindings)
    # Early failure when one hash is bigger than the other
    return false unless exp.size == tree.size
    
    # We iterate over expected pattern, since we demand that the keys that
    # are there should be in tree as well.
    exp.each do |expected_key, expected_value|
      return false unless tree.has_key? expected_key
      
      # Recurse into the value and stop early on failure
      value = tree[expected_key]
      return false unless element_match(value, expected_value, bindings)
    end
    
    return true
  end