private Node<K,V> putIfAbsent(Node<K,V> node){
  Node<K,V> old=data.putIfAbsent(node.getKey(),node);
  if (old == null) {
    length.incrementAndGet();
    node.appendToTail();
    evict();
  }
 else {
    policy.onAccess(this,old);
  }
  return old;
}

private Node < K , V > putIfAbsent ( Node < K , V > node ) { Node < K , V > old = data . putIfAbsent ( node . getKey ( ) , node ) ; if ( old == null ) { length . incrementAndGet ( ) ; node . appendToTail ( ) ; evict ( ) ; } else { policy . onAccess ( this , old ) ; } return old ; }
adds a node to the list and data store if it does not already exist .
