An idea to create an object that can enforce the stage ordering.
- The stage ordering can be defined flexibly.
- Once the ordering is defined, it will be immutable, which means it can no longer change.
- A builder class accepts the ordering of the stages.
- The builder will create the object with ordering enforcement, and it will be immutable.