Code deserializing change op JSON into ChangeOps should be moved out from Api\EditEntity into class (or several classes) implementing change op deserializer interface (T153950).
Api\EditEntity will then uses these classes without knowing any details on serialization, defined fields etc.
This will also allow extensions to add custom entity types (that do not have attributes that have been currently hard-coded in EditEntity).