public void sample(Gene gene, Marker marker, String type, ChangeEffect changeEffect) {
		Variant seqChange = changeEffect.getSeqChange();

		// Different seqChange? Clean the cache
		if (prevSeqChangePos != seqChange.getStart()) {
			latestTypes.clear();
			prevSeqChangePos = seqChange.getStart();
		}

		// Make sure we don't count the same type twice 
		if (latestTypes.contains(type)) return;
		latestTypes.add(type); // Update values

		//---
		// Count
		//---
		CountByType counter = getCounter(type);
		// Calculate the size of the intersection
		int start = Math.max(seqChange.getStart(), marker.getStart());
		int end = Math.min(seqChange.getEnd(), marker.getEnd());
		int size = end - start + 1;
		if (size > 0) {
			counter.inc(gene.getId(), size); // Increment counters
			//			// Add score (if any)
			//			if (!Double.isNaN(seqChange.getScore())) counter.addScore(gene.getId(), seqChange.getScore());
		}

		genes.add(gene); // Add gene to hash
	}