if (this == PureFactory.empty) { return this;
ATermList cur = this; ATermList reverse = getPureFactory().makeList(); while(!cur.isEmpty()){ reverse = reverse.insert(cur.getFirst()); cur = cur.getNext();
  public ATermList reverse() {    if (this == PureFactory.empty) {      return this;    }    return next.reverse().insert(first);  }