Hmm, I'd say all setProperty() methods without type parameter should call internalSetProperty() with exactType = false. E.g. the JavaDoc of setProperty(String, long) says:
The behavior of this method is identical to that of setProperty(String name, Value value) except that the value is specified as a long and, if possible, the type assigned to the property is LONG, otherwise a best-effort conversion is attempted.
And in NodeImpl.setProperty(String, Value) we pass exactType = false.
All tests pass with this modification.
I'm wondering why we enforced exact type before in those methods and how this worked in the past...