   constructor: (@objects) ->
     super()
     @objects or= []
-    @compileSplatLiteral = (o) ->
-      SplatNode.compileSplattedArray.call(this, @objects, o)
+
+  compileSplatLiteral: (o) ->
+    SplatNode.compileSplattedArray @objects, o
 
   compileNode: (o) ->
     o.indent = @idt 1

    super(idt, @class + ' ' + @operator)

  compileNode: (o) ->
    return @compileChain(o)      if @isChainable() and @first.unwrap() instanceof OpNode and @first.unwrap().isChainable()
    return @compileAssignment(o) if indexOf(@ASSIGNMENT, @operator) >= 0
    return @compileUnary(o)      if @isUnary()

    if isValue = @isValue()
      return @compilePatternMatch(o) if @variable.isArray() or @variable.isObject()
      return @compileSplice(o) if @variable.isSplice()
      return node.compile o if node = ValueNode.unfoldSoak o, this, 'variable'
    top    = del o, 'top'
    stmt   = del o, 'asStatement'
    name   = @variable.compile(o)
    if @value instanceof CodeNode and match = @METHOD_DEF.exec name
      @value.name  = match[2]
      @value.klass = match[1]
    val = @value.compile o
    return "#{name}: #{val}" if @context is 'object'
    o.scope.find name unless isValue and (@variable.hasProperties() or @variable.namespaced)
