class_docstr: Checker for ast <-> pattern.
  
  NodeVisitor is needed for specific behavior checker.
  
  Attributes
  ----------
  node : AST
      node we want to compare with pattern
  placeholders : [AST]
      list of placeholder value for later comparison or replacement.
class_docstr_tok: ["Checker","for","ast","<","-",">","pattern",".","NodeVisitor","is","needed","for","specific","behavior","checker",".","Attributes","--","--","--","--","--","node",":","AST","node","we","want","to","compare","with","pattern","placeholders",":","[","AST","]","list","of","placeholder","value","for","later","comparison","or","replacement","."]
docstr: Dict can match with unordered values. 
docstr_tok: ["Dict","can","match","with","unordered","values","."]
code: def visit_Dict(self, pattern):
      """Dict can match with unordered values."""
      if not isinstance(self.node, Dict):
          return False
      if len(pattern.keys) > MAX_UNORDERED_LENGTH:
          raise DamnTooLongPattern("Pattern for Dict is too long")
      for permutation in permutations(range(len(self.node.keys))):
          for i, value in enumerate(permutation):
              if not self.field_match(
                  self.node.keys[i], pattern.keys[value]
              ):
                  break
          else:
              pattern_values = [pattern.values[i] for i in permutation]
              return self.check_list(self.node.values, pattern_values)
      return False
  
imports: from gast import AST, iter_fields, NodeVisitor, Dict, Set
  from itertools import permutations
  from math import isnan
label_desc: Use image node_id 7 for calling the Check obj's underlying member method code with example usage: obj.visit_Dict(pattern) and returns: False, False, self