Escher default components

The files in this directory contain the default components that are used to implement the Escher API (i.e. the Escher class).

If clients have a need to, it is OK to instantiate stand-alone instances of these components, although there may be additional lifecycle considerations that must be accounted for; these should be mentioned in the class documentation.

TODO(ES-93): much of the code currently in escher/impl/ should be migrated here.