private String mutate(String source) {
		if (safeRand(10) == 0 || source.length() < 2) {
			return mutateAddLoop(source);
		}

		int bitsToMutate = safeRand(5);
		char[] charArray = source.toCharArray();
		for (int i = 1; i < bitsToMutate; i++) {
			int toReplace2 = -1;
			int toReplace = safeRand(charArray.length);
			char c = charArray[toReplace];
			if (c == '[') {
				toReplace2 = source.indexOf(']', toReplace);
			}
			if (c == ']') {
				toReplace2 = indexOfReverse(source, '[', toReplace);
			}
			charArray[toReplace] = randomCharater();
			if (toReplace2 != -1)
				charArray[toReplace2] = randomCharater();
		}
		return new String(charArray);
	}