@Override
  public void execute(Executable executable, Context context) {
    ExecutionBubble bubble;
    // TODO figure out Exception-passing
    try {
      bubble = new LocalExecutionBubbleCreator().create();
    } catch (IOException ioEx) {
      throw new RuntimeException(ioEx);
    }

    List<Resource> resourcesToAdd = new ArrayList<>();
    for (Resource resource : context.getResources()) {
      // TODO check that the resource doesn't have a null name, since it can be an arbitrary
      // implementation of the Resource interface?
      if (executable.getResources().contains(resource.getName())) {
        resourcesToAdd.add(resource);
      }
    }
    for (Resource resourceToAdd : resourcesToAdd) {
      bubble.addResource(resourceToAdd);
    }

    bubble.execute(executable);

    // TODO figure out Exception-passing
    try {
      bubble.cleanUp();
    } catch (IOException ioEx) {
      throw new RuntimeException(ioEx);
    }
  }