public Node<Key> FindLessThan(Key key) {
		Node<Key> x = head_;
		int level = GetMaxHeight() - 1;
		while (true) {
			assert (x == head_ || compare_.compare(x.key, key) < 0);
			Node<Key> next = x.Next(level);
			if (next == null || compare_.compare(next.key, key) >= 0) {
				if (level == 0) {
					return x;
				} else {
					// Switch to next list
					level--;
				}
			} else {
				x = next;
			}
		}
	}