use assoc-pairs-noret to create specified type when possible