public void concat(AbstractLinkedList<? extends E, ? extends T> other) {
        if (other.isEmpty()) {
            return;
        }

        if (isEmpty()) {
            head = other.head;
            last = other.last;
        } else {
            T otherHead = other.head;
            last.setNext(otherHead);
            otherHead.setPrev(last);
            last = other.last;
        }
        size += other.size;
        other.clear();
    }
public void concat ( AbstractLinkedList < ? extends E , ? extends T > other ) { if ( other . isEmpty ( ) ) { return ; } if ( isEmpty ( ) ) { head = other . head ; last = other . last ; } else { T otherHead = other . head ; last . setNext ( otherHead ) ; otherHead . setPrev ( last ) ; last = other . last ; } size += other . size ; other . clear ( ) ; }
Concatenates two linked lists. All elements of the specified list (which will be empty afterwards) are added at
the end of this list. This operation runs in constant time.

@param other
the list to append,