private final int closestIndex(final int key){
		// TODO: implement fastest algorithm
		// Here some binary search
		if (size == 0) return -1;
		int min = 0;
		int max = size-1;
		int n = 0;
		while ( true){
			int i = (max+min)/2;
			n++;// TODO: REMOVE DEBUG CODE
			if (n > size*2) throw new RuntimeException("Too many iterations: "+n+" , min="+min+" , max="+max+" , i="+i);
			int ref = keys[i];
			if ( ref == key ) return i;
			else if (min==max) return i; // TODO: maybe redundant !
			else if ( ref > key){
				if ( i == min) return i;
				max = i;
			} 
			else { // if ( ref< key){
				if ( i == min) return max;
				min = i;
			}
		}
	}