GameModule.getGameModule().getGameState().addPiece(fixedParent);
fixed.getMap().addPiece(fixedParent);
I think those commands are executed inside Map.placeAt invoked in next line:
comm = comm.append(fixedParent.getMap().placeAt(fixedParent, fixedParent.getPosition()));
in my version, lines 1980-1981:
addPiece(piece);
GameModule.getGameModule().getGameState().addPiece(piece);
so they are not needed, that’s why I had:
comm = comm.append(fixed.getMap().placeAt(fixedParent, fixed.getPosition()));
in place of those 3 lines.
Also, how do you track now that the fixed was added to fixedParent in createStack? That was what I used MoveTracker for. Anyway, if it works now, I will not argue 
On the other hand, I’m a bit worried that the same action (placing a piece on map in given point) is coded differently in two places - Map.placeOrMerge (using StackMetrics.merge) and PieceMover.movePieces. Such basic action should be coded in only one place and used by all methods that move pieces. Map.placeOrMerge is a good candidate for that.