public void mutate(int strandIndex, int mutatorKind, int index, Nucleotide nucleotideTo) {
		Strand strand = getStrand(strandIndex);
		if (strand == null)
			return;
		Mutator mutator = strand.getMutator(mutatorKind);
		if (mutator == null)
			return;
		if ((mutator instanceof SubstitutionMutator) || (mutator instanceof InsertionMutator)) {
			if (nucleotideTo == null)
				mutator.setMutationParam(null);
			else {
				String nucleoString = new String(new char[] { nucleotideTo.getName() });
				mutator.setMutationParam(new Object[] { nucleoString });
			}
		}
		else if (mutator instanceof MixedMutator) {
			Object[] mutatorParams = new Object[probabilities.length];
			for (int i = 0; i < mutatorParams.length; i++) {
				mutatorParams[i] = new Integer(probabilities[i]);
			}
			mutator.setMutationParam(mutatorParams);
		}
		mutator.mutate(this, strandIndex, index);
		mutator.setMutationParam(null);
		verifyFragments();
	}