         computed: true
         object:
           type: 'Identifier'
-          name: '_$jscoverage'
+          name: coverageVar
         property:
           type: 'Literal'
           value: filename

        type: 'Literal'
        value: -value
  else
    node.type = 'Literal'
    node.value = value


mathable = (node) -> node.type == 'Literal' || (node.type == 'UnaryExpression' && node.operator == '-' && node.argument.type == 'Literal')


    output = []
    output.push "/* automatically generated by jscov - do not edit */"
    output.push "if (typeof #{coverageVar} === 'undefined') #{coverageVar} = {};"
    output.push "if (!#{coverageVar}['#{filename}']) {"
    output.push "  #{coverageVar}['#{filename}'] = [];"
    trackedLines.forEach (line) ->
      output.push "  #{coverageVar}['#{filename}'][#{line}] = 0;"
    output.push "}"
    output.push coveredCode
    output.push "#{coverageVar}['#{filename}'].source = [" + originalSource.join(",") + "];"

    output.join('\n') # should maybe windows style line-endings be used here in some cases?

