_getPlainHash return correct value always. But if we call it first time for this key we will create new plainHash. Next times we just return already created one. It is simply perfomance reason. The alternative is to return structure { plainHash, isNew } from _getPlainHash, but it'll create new object (slow).