 
 # Keep the identifier regex in sync with the Lexer.
 IDENTIFIER:   /^[a-zA-Z$_](\w|\$)*$/
-
-# Flatten nested arrays recursively.
-flatten: (list) ->
-  memo: []
-  for item in list
-    return memo.concat(flatten(item)) if item instanceof Array
-    memo.push(item)
-    memo
-  memo
 
 # Merge objects.
 merge: (options, overrides) ->

  type: 'Expressions'

  constructor: (nodes) ->
    @children: @expressions: _.compact flatten nodes or []
    this

  # Tack an expression on to the end of this expression list.

# toString representation of the node, for inspecting the parse tree.
Node::toString: (idt) ->
  idt: (idt || '') + TAB
  @type + '\n' + _.map(@children, (child) -> idt + child.toString(idt)).join('')

# Default implementations of the common node methods.
Node::unwrap:             -> this
