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