we already finalize when reflect
find an unique index for key if there's no key
choose another name if the name is already taken