public void add(final T node) {
        if ( this.firstNode == null ) {
            this.firstNode = node;
            this.lastNode = node;
        } else {
            this.lastNode.setNext( node );
            node.setPrevious( this.lastNode );
            this.lastNode = node;
        }
        this.size++;
    }
@Test
    public void testAdd() {
        this.list.add( this.node1 );
        assertThat(this.node1.getPrevious()).as("Node1 previous should be null").isNull();
        assertThat(this.node1.getNext()).as("Node1 next should be null").isNull();
        assertThat(this.node1).as("First node should be node1").isSameAs(this.list.getFirst());
        assertThat(this.node1).as("Last node should be node1").isSameAs(this.list.getLast());

        this.list.add( this.node2 );
        assertThat(this.node2).as("node1 next should be node2").isSameAs(this.node1.getNext());
        assertThat(this.node1).as("node2 previous should be node1").isSameAs(this.node2.getPrevious());
        assertThat(this.node1).as("First node should be node1").isSameAs(this.list.getFirst());
        assertThat(this.node2).as("Last node should be node2").isSameAs(this.list.getLast());

        this.list.add( this.node3 );
        assertThat(this.node3).as("node2 next should be node3").isSameAs(this.node2.getNext());
        assertThat(this.node2).as("node3 previous should be node2").isSameAs(this.node3.getPrevious());
        assertThat(this.list.size()).as("LinkedList should have 3 nodes").isEqualTo(3);
        assertThat(this.node1).as("First node should be node1").isSameAs(this.list.getFirst());
        assertThat(this.node3).as("Last node should be node3").isSameAs(this.list.getLast());
    }