public Markers queryDeep(Marker marker) {
		if (Config.get().isErrorOnMissingChromo() && isChromosomeMissing(marker)) throw new RuntimeEOFException("Chromosome missing for marker: " + marker);

		boolean hitChromo = false;
		Markers hits = new Markers();
		Markers intersects = query(marker);

		if (intersects.size() > 0) {
			for (Marker m : intersects) {
				hits.add(m);

				if (m instanceof Chromosome) {
					hitChromo = true; // OK (we have to hit a chromosome, otherwise it's an error
				} else if (m instanceof Gene) {
					// Analyze Genes
					Gene gene = (Gene) m;
					hits.addAll(gene.query(marker));
				}
			}
		}

		if (!hitChromo && Config.get().isErrorChromoHit()) throw new RuntimeException("ERROR: Out of chromosome range. " + marker);
		return hits;
	}