     from:       @range.from.compile(o)
     to:         @range.to.compile(o)
     plus_part:  if @range.exclusive then '' else ' + 1'
-    ".slice(" + from + ', ' + to + plus_part + ')'
+    ".slice($from, $to$plus_part)"
 
 
 # An object literal.

  compile_node: (o) ->
    o.indent:     @idt(1)
    o.top:        true
    error_part:   if @error then ' (' + @error.compile(o) + ') ' else ' '
    catch_part:   (@recovery or '') and ' catch' + error_part + '{\n' + @recovery.compile(o) + '\n' + @idt() + '}'
    finally_part: (@ensure or '') and ' finally {\n' + @ensure.compile(merge(o, {returns: null})) + '\n' + @idt() + '}'
    @idt() + 'try {\n' + @attempt.compile(o) + '\n' + @idt() + '}' + catch_part + finally_part

statement TryNode


    return @compile_splat(o) if @args[@args.length - 1] instanceof SplatNode
    args: (arg.compile(o) for arg in @args).join(', ')
    return @compile_super(args, o) if @variable is 'super'
    "$@prefix${@variable.compile(o)}($args)"

  # Compile a call against the superclass's implementation of the current function.
  compile_super: (args, o) ->
    methname: o.scope.method.name
    meth: if o.scope.method.proto
      "${o.scope.method.proto}.__superClass__.$methname"
    else
      "$methname.__superClass__.constructor"
    "$meth.call(this${ if args.length then ', ' else '' }$args)"

  # Compile a function call being passed variable arguments.
  compile_splat: (o) ->
