···224224You can also compose these types together to form more complex types. You can also save your own types as constants for re-use.
225225226226```ruby
227227-AttributeType = Literal::Types::_Union(String, Symbol, Literal::Types::_Interface(:to_s))
227227+AttributeType = Literal::Types::_Union(
228228+ String,
229229+ Symbol,
230230+ Literal::Types::_Interface(:to_s)
231231+)
228232```
229233230234Note 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)`.