@Override
	public void prepareInternal(int skips, boolean assumeOnSkip) {
		if(moves.length == 0)
			return;
		if(!assumeOnSkip) {
			for(int i=0;i<moves.length-1;i++)
				if(!moves[i].execute())
					throw new RuntimeException("execution of move "+i+" failed");
		}
		moves[moves.length-1].prepareInternal(skips, assumeOnSkip);
	}