If you look at the whole method, not just the diff it illustrates that someone already identified that p.getNode() is insufficient since for multivalued properties they had this special handling.  While I personally don't know enough about what properties go through here and how properties of different types behave when getNode() is invoked, it is my understanding that the only difference between properties that return true from p.isMultiple() and those that return false is whether the have multiple values.  Knowing that, it seems clear that for whatever reason justified this rigmarole for the values of multivalued properties we are justified in performing it on the values of nodes that happen to be single valued. 

Honestly I think it would be cleaner to collapse the whole *if* statement here and always assume that the value is a value from the property and have a single execution path for this method.  That likely changes the contract for the method since a javadoc implies that for single-valued properties the "value" parameter need not be set. (though it appears as if it always is)