             body.unshift c
             return c.id
 
+  catchClauses = [] # TODO make this more precise
+
   estraverse.replace c,
     enter: (c, parent) ->
       switch c.type

      when 'CallExpression', 'NewExpression'
        "#{walk c.callee}(#{c.arguments.map(walk).join ', '})"
      when 'ThrowStatement'
        p.addLine "raise #{walk c.argument}"
      when 'TryStatement'
        p.addLine "try:"
        walk c.block

              callee: { type: 'Identifier', name: 'isinstance' }
              arguments: [c.left, right]
            }
        when 'ThrowStatement'
          if (lastCatch = catchClauses[catchClauses.length - 1]) and
             JSON.stringify(lastCatch.param) == JSON.stringify(c.argument)
            c.argument = null
          return
        when 'CatchClause'
          catchClauses.pop()
          return
  c

ensure_block = (c) ->
