https://softwarepatternslexicon.com/ts/behavioral-patterns/state-pattern/
State Pattern in TypeScript: Dynamic Behavior Management