My rationale was that this way a user could test for the difference between non-fields (such as a `get_FOO_value` method or a custom property based on a field).

Does that use case seem reasonable?

If we use your implementation of the method it would require only known model fields to be tracked.  We could add support for non-field tracking later if you think there's no need to support it now.

I didn't write a test for that case.  I should write one regardless of which implementation we choose.