An Encoder is a class which can be used to create
files or streams that encode the state of a collection of
JavaBeans in terms of their public APIs. The Encoder,
in conjunction with its persistence delegates, is responsible for
breaking the object graph down into a series of Statementss
and Expressions which can be used to create it.
A subclass typically provides a syntax for these expressions
using some human readable form - like Java source code or XML.