caffeine_lang/common/decoders
Type Restrictions:
Collections:
- List(T): T must be a primitive (Boolean, Float, Integer, String)
- Dict(K, V): K and V must both be primitives
Modifiers:
- Optional(T): T can be a primitive or collection, not another modifier
- Defaulted(T, default): T must be a primitive, default must be valid for T