Fix CTYP-85.

Using abstract-type in abstract-result means we could try
and abstract the same filter/object twice. We relax the
contracts to allow this.