/* package */ Run run(JobInvocation job, List<Action> actions)
     throws ExecutionException, InterruptedException {
   job.run(new FlowCause(this), actions);
   addBuild(job);
   getState().setResult(job.getResult());
   return job.getBuild();
 }
 public synchronized void addBuild(JobInvocation build)
     throws ExecutionException, InterruptedException {
   builds.addVertex(build);
   for (JobInvocation up : state.get().getLastCompleted()) {
     String edge = up.toString() + " => " + build.toString();
     LOGGER.fine("added build to execution graph " + edge);
     builds.addEdge(up, build, edge);
   }
   state.get().setLastCompleted(build);
 }