docs: def n_atom(self, node):
          """atom ::=
               ('(' [yield_expr|testlist_gexp] ')'
                   | '[' [listmaker] ']'
                   | '{' [dictmaker] '}'
                   | '`' testlist1 '`'
                   | NAME | NUMBER | STRING+)
          """
          length = len(node)
          if length == 1:
              self.preorder(node[0])
          elif length == 3:
              self.preorder(node[0])
              self.preorder(node[1])
              self.preorder(node[2])
          else:
              assert False, "Expecting atom to have length 1 or 3"
          self.prune()