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: Set have unordered values. 
docstr_tok: ["Set","have","unordered","values","."]
code: def visit_Set(self, pattern):
      """Set have unordered values."""
      if not isinstance(self.node, Set):
          return False
      if len(pattern.elts) > MAX_UNORDERED_LENGTH:
          raise DamnTooLongPattern("Pattern for Set is too long")
      return any(
          self.check_list(self.node.elts, pattern_elts)
          for pattern_elts in permutations(pattern.elts)
      )
  
imports: from gast import AST, iter_fields, NodeVisitor, Dict, Set
  from itertools import permutations
  from math import isnan
label_desc: Use image node_id 6 for calling the Check obj's underlying member method code with example usage: obj.visit_Set(pattern) and returns: any, False