     return "(#{rv})"
     
   @FunctionCallArgument::js = ->
-    return @val.js()+    return @val.js()
+    
+  snippets =
+    'in': 'var $kindexof = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };'
+    
  
  self = this
  
  string_escape = (str) ->
    
  
  @File::js = ->
    i = ''
    scope = {}
    scopes = []
    rv = (statement.js() for statement in @statements).join '\n'
    return pop_scope rv, yes, yes
    
  @Statement::js = ->

    
  @Expression::js = ->
    return "#{@left.js()}" unless @op?
    opjs = @op.js()
    if opjs is 'in'
      unless use_snippets['in']?
        use_snippets['in'] = snippets['in']
        subscope['$kindexof'] = 'closure' for subscope in scopes
        scope['$kindexof'] = 'closure'
      return "$kindexof.call(#{@right.js()}, #{@left.js()}) >= 0"
    else
      return "#{@left.js()} #{opjs} #{@right.js()}"
    
  @UnaryExpression::js = ->
    if @base.type is 'IDENTIFIER'
