     for prop in @properties
       if prop.variable and prop.variable.base.value is 'constructor'
         func: prop.value
-        func.body.push(new ReturnNode(new LiteralNode('this')))
+        func.body.push(new ReturnNode(literal('this')))
         constructor: new AssignNode(@variable, func)
       else
         if prop.variable

  # If the code generation wishes to use the result of a complex expression
  # in multiple places, ensure that the expression is only ever evaluated once.
  compile_reference: (o) ->
    reference: new LiteralNode(o.scope.free_variable())
    compiled:  new AssignNode(reference, this)
    [compiled, reference]


    expr: expressions.unwrap()
    return expressions if expr.is_statement_only() or expr.contains (n) -> n.is_statement_only()
    Expressions.wrap([new CallNode(
      new ValueNode(literal(array), [new AccessorNode(literal('push'))]), [expr]
    )])

}
