     parentClassName = parent?.className
     usedAsExpression = parent? and parentClassName isnt 'Block'
     src = switch ast.className
+
       when 'Program'
         options.ancestors.unshift ast
         generate ast.block, options
+
       when 'Block'
         options.ancestors.unshift ast
         sep = '\n'
         sep = "#{sep}\n" if parentClassName is 'Program'
         (generate s, options for s in ast.statements).join sep
+
       when 'Identifier'
         ast.data
+
       when 'Int'
         absNum = if ast.data < 0 then -ast.data else ast.data
         # if number is a power of two (at least 2^4) or hex is a shorter

        options.precedence = prec
        options.ancestors.unshift ast
        "#{op}#{generate ast.expr, options}"
      when 'UnaryExistsOp', 'PostIncrementOp', 'PostDecrementOp', 'Spread'
        op = operators[ast.className]
        prec = precedence[ast.className]

            arg
          argList = if ast.arguments.length is 0 then '()' else " #{args.join ', '}"
          "#{fn}#{op}#{argList}"

      when 'MemberAccessOp', 'SoakedMemberAccessOp', 'ProtoMemberAccessOp', 'SoakedProtoMemberAccessOp'
        op = operators[ast.className]
        prec = precedence[ast.className]
