Add support for per-type originating elements.

Would this interface be simpler if it accepted a sink collection? This is recursive, and does a ton of work. I'd hate to step-debug this.