SMC uses the state pattern to its fullest extent. In the real world, events don’t always happen when they should. Dealing with unexpected events is a must for a robust application. By combining virtual methods with the state pattern, SMC allows you to define “Default” transitions - transitions which allow your objects to handle unexpected events, recover and continue providing service (rather than crashing, burning and getting you into trouble).
SMC is written in Java but it can generates code for the following object-oriented programming languages: