public virtual ATermList concat(ATermList rhs) { if (isEmpty()) { return(rhs); } if (next.isEmpty()) { return(rhs.insert(first)); } return(next.concat(rhs).insert(first)); }