new TestdataChainedEntity[]{a1, a2, a3, a4, a5});
SubChainReversingChangeMove move = new SubChainReversingChangeMove(
new SubChain(Arrays.<Object>asList(a2, a3, a4)),
variableDescriptor, a1);
Move undoMove = move.createUndoMove(scoreDirector);
move.doMove(scoreDirector);
SelectorTestUtils.assertChain(a0, a1, a4, a3, a2, a5);
verify(scoreDirector, atLeast(1)).beforeVariableChanged(a5, "chainedObject");
verify(scoreDirector, atLeast(1)).afterVariableChanged(a5, "chainedObject");
verify(scoreDirector).beforeVariableChanged(a4, "chainedObject");
verify(scoreDirector).afterVariableChanged(a4, "chainedObject");
verify(scoreDirector).beforeVariableChanged(a3, "chainedObject");
verify(scoreDirector).afterVariableChanged(a3, "chainedObject");
verify(scoreDirector).beforeVariableChanged(a2, "chainedObject");
verify(scoreDirector).afterVariableChanged(a2, "chainedObject");
undoMove.doMove(scoreDirector);
SelectorTestUtils.assertChain(a0, a1, a2, a3, a4, a5);
}