make sure we keep the specific iterator type for inlining purposes