Since Copycat has support for versioned schemas and connectors may encounter different versions of the same schema, it will be useful for some connectors to be able to project between different versions of a schema, or have an automatic way to try to project to a target schema (e.g. an existing database table the connector is trying to write data to).
These utilities should be pretty small because the complex types we support are fairly limited. The primary code required will be for Structs. However, we should take care in designing these utilities since there may be performance implications. For example, when projecting between two schemas, it would be better to come up with a plan object that can efficiently perform the project and be able to reuse that plan many times.