@Nullable
  public Script getScriptSync(@NotNull final String isolateId, @NotNull final String scriptId) {
    assertSyncRequestAllowed();

    final Semaphore semaphore = new Semaphore();
    semaphore.down();

    final Ref<Script> resultRef = Ref.create();

    addRequest(
        () ->
            myVmService.getObject(
                isolateId,
                scriptId,
                new GetObjectConsumer() {
                  @Override
                  public void received(Obj script) {
                    resultRef.set((Script) script);
                    semaphore.up();
                  }

                  @Override
                  public void received(Sentinel response) {
                    semaphore.up();
                  }

                  @Override
                  public void onError(RPCError error) {
                    semaphore.up();
                  }
                }));

    semaphore.waitFor(RESPONSE_WAIT_TIMEOUT);
    return resultRef.get();
  }
 public void getCollectionObject(
     @NotNull final String isolateId,
     @NotNull final String objectId,
     final int offset,
     final int count,
     @NotNull final GetObjectConsumer consumer) {
   addRequest(() -> myVmService.getObject(isolateId, objectId, offset, count, consumer));
 }
 public void getObject(
     @NotNull final String isolateId,
     @NotNull final String objectId,
     @NotNull final GetObjectConsumer consumer) {
   addRequest(() -> myVmService.getObject(isolateId, objectId, consumer));
 }