- The builder is a 'guided builder' with a sequence of steps.
- The builder first enforces the required properties.
- The builder then allows for all optional properties.
- The desired product can only be instantiated via the builder.
- Direct instantiation of a product is therefore prohibited.
- Only the interface of the product is exposed to the client.
- The resulting product is immutable.
- The builder has a fluent syntax.
- The builder handles a nested subclass with lambda syntax.