     method.code.each_opcode (idx, oc) =>
       current_block++ if idx in labels
       block = @blocks[current_block]
+      if try_locations[idx]?
+        block.opcodes.push try_locations[idx]
+        block.has_try = try_locations[idx].handler
       block.opcodes.push oc
 
     @param_names = ['rs']


    rv.concat postordered.reverse()

  compile: (prev_stack, prev_locals) ->
    return if @visited

    @visited = true

    # the first block has its local vars set from the function params
    unless @start_idx == 0
      @stack =
        for s,i in prev_stack
          if s? then new StackVar i else null
      @locals =
        for l,i in prev_locals
          if l? then new LocalVar i else null

      if oc.offset?
        targets.push idx + oc.byte_count + 1, idx + oc.offset

    # organize exception handlers, adding targets as needed
    try_locations = {}
    for handler in method.code.exception_handlers
      try_locations[handler.start_pc] = {name: 'try', byte_count: -1, handler: handler}
      targets.push handler.start_pc, handler.handler_pc

    targets.sort((a,b) -> a - b)
    labels = _.uniq(targets)

