         cf = runtime_state.curr_frame()
         runtime_state.resuming_stack--
         return cf.method.run(runtime_state) unless cf.method is @
+      if runtime_state.resuming_stack == runtime_state.meta_stack.length - 1
+        runtime_state.resuming_stack = null
     else
       caller_stack = runtime_state.curr_frame().stack
       if virtual

      ]
      FileInputStream: [
        o 'available()I', (rs) -> 1 # TODO
        o 'readBytes([BII)I', (rs) ->
            if rs.resuming_stack?
              rs.resuming_stack = null
              rv = rs.secret_stash
              rs.secret_stash = null
              rv
            else
              args = rs.curr_frame().locals
              [offset,n_bytes] = args[2..3]
              throw new util.YieldException (cb) ->
                rs.async_input n_bytes, (bytes) ->
                  rs.get_obj(args[1]).array[offset...offset+bytes.length] = bytes
                  rs.secret_stash = bytes.length
                  cb()
      ]
      ObjectStreamClass: [
        o 'initNative()V', (rs) ->  # NOP

        o 'isAlive()Z', (rs) -> false
        o 'start0()V', (rs) -> # NOP
        o 'sleep(J)V', (rs, millis) ->
            rs.curr_frame().resume = -> # NOP
            throw new util.YieldException (cb) ->
              setTimeout(cb, millis.toNumber())
      ]
      Throwable: [
        o 'fillInStackTrace()L!/!/!;', (rs, _this) ->
