Compile this with plantuml activities.uml @startuml [*] --> created : init() created : - Add optional parameters before starting created -down-> starting : start() starting : - Adding more parameters is invalid starting : - May not be running (eg, a Comm needs both\n the sender and receiver to start) starting -[dotted]down-> running : fired automatically by activity\nvetoable by observers running : **Simulation Mode** (regular performance simulation) running : Each activity is given a amount of work at creation,\n that decreases with time according to the power of resources\n and the sharing of resources amongst activities. running : **Verification Mode** (model-checking) running : Exhaustively test all orders of activity completion amongst running ones. running -[dashed]-> done : . fired by performance models or by checker done : - Destroyed only when refcount becomes 0 done : - The outcome of an activity will not change once it's done done --> [*] created --> CancelError : cancel() starting -left-> CancelError : cancel() running --> CancelError : cancel() CancelError : Error: The user canceled that activity created -[dashed]-> FailureError : may be fired by models starting -[dashed]right-> FailureError running -[dashed]-> FailureError FailureError : Error: one of the used resource failed starting -[dashed]-> TimeoutError running -[dashed]right-> TimeoutError TimeoutError: Error: the specified timeout elapsed before completion TimeoutError: May be surprising if timeout given by another involved actors @enduml