@startuml
'figure 7: The State Pattern'
skinparam monochrome true
skinparam handwritten false
skinparam shadowing false
skinparam classAttributeIconSize 0
hide class circle
hide abstract circle

abstract class State {
    + process(core: Core)
}

class Core {
    + current_state: State
    + process(core: "Core")
}

class State1 {
    + process(core: Core)
}

class State2 {
    + process(core: Core)
}

class State3 {
    + process(core: Core)
}


Core::current_state *-- State

State <|.. State1
State <|.. State2
State <|.. State3

@enduml
