code: public void remove(final ObjectSinkNode node) {
          if ( (this.firstNode != node) && (this.lastNode != node) ) {
              node.getPreviousObjectSinkNode().setNextObjectSinkNode( node.getNextObjectSinkNode() );
              node.getNextObjectSinkNode().setPreviousObjectSinkNode( node.getPreviousObjectSinkNode() );
              this.size--;
              node.setPreviousObjectSinkNode( null );
              node.setNextObjectSinkNode( null );
  
          } else {
              if ( this.firstNode == node ) {
                  removeFirst();
              } else {
                  removeLast();
              }
          }
      }
docs: Removes a <code>ObjectSinkNode</code> from the list. This works by attach the previous reference to the child reference.
  When the node to be removed is the first node it calls <code>removeFirst()</code>. When the node to be removed is the last node
  it calls <code>removeLast()</code>.
  
  @param node
  The <code>ObjectSinkNode</code> to be removed.