SMC takes a state machine stored in an .sm file and generates the state pattern classes in fourteen programming languages. Its features include default transitions, transition arguments, transition guards, push/pop transitions, and Entry/Exit actions. It requires Java SE 1.6 or better.