Both EntityDifferStrategy and EntityPatcherStrategy are (luckily) not abstract, but only interfaces. What I see needs to be done is:
- Make FormPatcher implement EntityPatcherStrategy.
- This should be trivial, basically renaming an existing method.
- Properly test all patcher methods.
- Make FormDiffer implement EntityDifferStrategy.
- Coming up with proper implementations for getConstructionDiff/getDestructionDiff might get a little tricky. Note that an "empty Form" should not contain a representation, otherwise the diff will not properly show the initial representation. The current implementation does not allow to construct a Form with no representation, but allows to remove all.
- Properly test all differ methods.
Draft code is already at https://gerrit.wikimedia.org/r/394072.