JcrPropertyMap class has internal cache for properties an values.
The cache is not used correctly, e.g. reading the same property twice still results in access to underlying node.
The problem is with get() methods, when property is red it is put into the cache, but the cache is never checked if it already contains the property.
The only way to force the caching is to use readFully() method indirectly, in this case read method is examining the cache.
It looks this has been introduced by fixing