public DistanceInstance nextQuery() {
		// need to save out the i-th field, if it's been prepared.
		// poll sublearners in random order, to be fair
		// indices [0,innerLearners.length-1] are the inner learners,
		// index innerLearners.length is the comboLearner
		ArrayList indices = new ArrayList(innerLearners.length+1);
		for (int i=0; i<indices.size(); i++) indices.set(i, new Integer(i) );
		Collections.shuffle(indices);
		for (int i=0; i<indices.size(); i++) {
			int k = ((Integer)indices.get(i)).intValue();
			if ( k==innerLearners.length && comboHasNextQuery() ) {
				return comboNextQuery();
			} else if (innerLearners[k].hasNextQuery()) {
				return innerLearners[k].nextQuery();
			}
		}
		throw new IllegalStateException("someone seems to have forgotten they want a query");
	}