public boolean contains(int x, Object value) {
		UHNode node = this, parent = null;
		int H, L;
		// Realiza la busqueda en el arbol iterativamente.
		while (true) {
			UHElement b = node.best;
			if (b != null) { synchronized (b) {
					if (b.equals(value)) // Si el elemento buscado es el
										 // mejor elemento del nodo
										 // actual.
					{
						b.incr();
						if (parent != null)
							parent.updateBest(b);
						return true;
					}
				}
			}
			if (node.isEmpty()) {
				return false;
			} else if (node.min == x) // Si el elemento estaria en los elementos
										// con hash minimo.
			{
				synchronized (node.minElements) {
					return node.minElements.contains(value, this);
				}
			} else // Si el elemento estaria en un nivel inferior. Esta parte es
					// lock-free.
			{
				H = x >>> node.shift;
				L = x ^ (H << node.shift);
				UHNode child = node.LQ[H];
				if (child == null) {
					return false;
				} else {
					parent = node;
					node = child;
					x = L;
				}
			}

		}
	}