Rename `trait_ref` field to `predicate`, since `trait_ref` is really
overly general, and the value is always *some* sort of predicate.
WIP
WIP -- various refactorings