Broadly updated code.  Includes new serialization options, defaulting to @Nonnull annotations, expanded logging, some new pattern objects (mostly incomplete) and some test support stuff that should make unit testing easier.
Another try