code: public E get(int index)
      {
          lock.readLock().lock();
          try
          {
              if (index >= size)
                  return null;
  
              index++;
              int c = 0;
              Node<E> finger = head;
              for (int i = maxHeight - 1 ; i >= 0 ; i--)
              {
                  while (c + finger.size[i] <= index)
                  {
                      c += finger.size[i];
                      finger = finger.next(i);
                  }
              }
  
              assert c == index;
              return finger.value;
          }
          finally
          {
              lock.readLock().unlock();
          }
      }
docs: retrieve the item at the provided index, or return null if the index is past the end of the list