code: public Step adopt() {
          Step step = pollLast();
          synchronized (LOCK) {
              getLast().getSteps().add(step);
          }
          return step;
      }
docs: Move last step to children of previous step. How it works:
  <pre>
  before: step1(...) -> step2(child1 -> ... -> childN) -> step3(...) -> ... -> null
  after:  step2(child1 -> ... -> childN -> step1(...)) -> step3(...) -> ... -> null
  </pre>
  @return ex-last step