nodes: 0, module; 1, function_definition; 2, function_name:union; 3, parameters; 4, block; 5, identifier:self; 6, list_splat_pattern; 7, expression_statement; 8, return_statement; 9, identifier:others; 10, comment:"""Return the union of two or more sets as a new set.
  
          >>> from ngram import NGram
          >>> a = NGram(['spam', 'eggs'])
          >>> b = NGram(['spam', 'ham'])
          >>> sorted(list(a.union(b)))
          ['eggs', 'ham', 'spam']
          """; 11, call; 12, attribute; 13, argument_list; 14, identifier:self; 15, identifier:copy; 16, call; 17, attribute; 18, argument_list; 19, call; 20, identifier:union; 21, list_splat; 22, identifier:super; 23, argument_list; 24, identifier:others; 25, identifier:NGram; 26, identifier:self
code: def union(self, *others):
          """Return the union of two or more sets as a new set.
  
          >>> from ngram import NGram
          >>> a = NGram(['spam', 'eggs'])
          >>> b = NGram(['spam', 'ham'])
          >>> sorted(list(a.union(b)))
          ['eggs', 'ham', 'spam']
          """
          return self.copy(super(NGram, self).union(*others))