private Collection<SkeletonMutation> getMutationForRow(int row) {
		final Collection<Pin> pins = skeleton.getPinsOfRow(row);
		final Collection<Integer> usedCols = new HashSet<Integer>();
		for (Pin pin : pins) {
			usedCols.add(getCol(pin));
		}
		final Collection<SkeletonMutation> result = new ArrayList<SkeletonMutation>();
		for (Pin pin1 : pins) {
			final int c = getCol(pin1);
			if (usedCols.contains(c + 1) == false) {
				result.add(new Move(pin1, 1));
			}
			if (usedCols.contains(c - 1) == false) {
				result.add(new Move(pin1, -1));
			}
			for (Pin pin2 : pins) {
				if (pin1 == pin2) {
					continue;
				}
				if (getCol(pin1) > getCol(pin2)) {
					continue;
				}
				if (getCol(pin1) == getCol(pin2)) {
					throw new IllegalStateException();
				}
				result.add(new Switch(pin1, pin2));
			}
		}
		return result;
	}