code: public ChainableReverseAbstractInterpreter append(
        ChainableReverseAbstractInterpreter lastLink) {
      checkArgument(lastLink.nextLink == null);
      this.nextLink = lastLink;
      lastLink.firstLink = this.firstLink;
      return lastLink;
    }
docs: Appends a link to {@code this}, returning the updated last link.
  <p>
  The pattern {@code new X().append(new Y())...append(new Z())} forms a
  chain starting with X, then Y, then ... Z.
  @param lastLink a chainable interpreter, with no next link
  @return the updated last link