[minor] javadocs
[refactor] moving class to a separate package
Annotating the main package with @ExportAllClasses
Introducing a class usage verifier result, to be more descriptive on why a class usage is not allowed
Adding () as the throw method may have side-effects
Added a method to get the error description as an Option