···152152153153### `_Class(T)`
154154155155-The `_Class` type ensures the given value is a calss and subclasses the given `T` class.
155155+The `_Class` type ensures the given value is a class and subclasses the given `T` class.
156156157157```ruby
158158attribute :error, _Class(RuntimeError)
···174174attribute :degrees _Float(0..360)
175175```
176176177177-You can also compose these types together to form more complex types.
177177+You can also compose these types together to form more complex types. You can also save your own types as constants for re-use.
178178+179179+```ruby
180180+AttributeType = Literal::Types::_Union(String, Symbol, Literal::Types::_Interface(:to_s))
181181+```
182182+183183+Note unless you've extended `Literal::Types`, you'll need to reference the types by their fully qualified names. These types are methods, so why are we accessing them with `::`? It's a little known fact that `::` can stand in for `.` in Ruby. I like using `::` here becuase it makes these look more like normal generics. If you prefer, you can use `.`, e.g. `Literal::Types._Interface(:to_s)`.
178184179185## Writing your own type matchers
180186