Refactor ListDiffer

This inlines a private method and arranges the code in a way that the deprecated logic comes first (the `if...elseif` part) and the non-deprecated logic last. Note that the constructor parameter is optional.