Suggest more closely copying guava's `Optional` implementation. For example, `implements Serializable`, include all methods from `Optional`, throw `IllegalStateException` if `get()` called when not `isPresent()`, etc.

Reasoning is that if this is used in place of `Optional` then it should behave the same where possible/appropriate.