 # being requested by the surrounding function), information about the current
 # scope, and indentation level.
 exports.BaseNode: class BaseNode
-
-  # If `is_statement` is passed, marks the node as a JavaScript *statement*,
-  # or as a *pure_statement* if `is_pure_statement`. Statements must be
-  # wrapped in a closure when used as an expression, and nodes tagged as
-  # *pure_statement* cannot be closure-wrapped without losing their meaning.
-  constructor: (o) ->
-    o: or {}
-    @constructor_name:        o.name     if o.name
-    @children_attributes:     o.children if o.children
-    (@is_statement:        -> true)      if o.is_statement
-    (@is_pure_statement:   -> true)      if o.is_pure_statement
 
   # Common logic for determining whether to wrap this node in a closure before
   # compiling it, or to compile directly. We need to wrap if this node is a

# Parentheses are a good way to force any statement to become an expression.
exports.ParentheticalNode: class ParentheticalNode extends BaseNode

  constructor: (expression) ->
    super {name: 'ParentheticalNode', children: ['expression']}
    @expression: expression

  is_statement: ->


  toString: (idt) ->
    idt: or ''
    children: (child.toString(idt + TAB) for child in @collect_children()).join('')
    "\n$idt$children"

#### SplatNode
