(a) Cache current pointee value in SharedIterator and
IndividualFieldValueIterator to reduce overhead
(b) Moved common code to utils