nodes: 0, module; 1, function_definition; 2, function_name:copy; 3, parameters; 4, block; 5, identifier:self; 6, default_parameter; 7, expression_statement; 8, return_statement; 9, identifier:items; 10, None; 11, comment:"""Return a new NGram object with the same settings, and
          referencing the same items.  Copy is shallow in that
          each item is not recursively copied.   Optionally specify
          alternate items to populate the copy.
  
          >>> from ngram import NGram
          >>> from copy import deepcopy
          >>> n = NGram(['eggs', 'spam'])
          >>> m = n.copy()
          >>> m.add('ham')
          >>> sorted(list(n))
          ['eggs', 'spam']
          >>> sorted(list(m))
          ['eggs', 'ham', 'spam']
          >>> p = n.copy(['foo', 'bar'])
          >>> sorted(list(p))
          ['bar', 'foo']
          """; 12, call; 13, identifier:NGram; 14, argument_list; 15, conditional_expression:items if items is not None else self; 16, attribute; 17, attribute; 18, attribute; 19, attribute; 20, attribute; 21, attribute; 22, identifier:items; 23, comparison_operator:items is not None; 24, identifier:self; 25, identifier:self; 26, identifier:threshold; 27, identifier:self; 28, identifier:warp; 29, identifier:self; 30, identifier:_key; 31, identifier:self; 32, identifier:N; 33, identifier:self; 34, identifier:_pad_len; 35, identifier:self; 36, identifier:_pad_char; 37, identifier:items; 38, None
code: def copy(self, items=None):
          """Return a new NGram object with the same settings, and
          referencing the same items.  Copy is shallow in that
          each item is not recursively copied.   Optionally specify
          alternate items to populate the copy.
  
          >>> from ngram import NGram
          >>> from copy import deepcopy
          >>> n = NGram(['eggs', 'spam'])
          >>> m = n.copy()
          >>> m.add('ham')
          >>> sorted(list(n))
          ['eggs', 'spam']
          >>> sorted(list(m))
          ['eggs', 'ham', 'spam']
          >>> p = n.copy(['foo', 'bar'])
          >>> sorted(list(p))
          ['bar', 'foo']
          """
          return NGram(items if items is not None else self,
                       self.threshold, self.warp, self._key,
                       self.N, self._pad_len, self._pad_char)