move collectTypes to Fields and make non-public

no sane downstream user would try to call it and helps lead to
moving more field logic into field info's constructor