@startuml
state CanonicalHsm {
  [*] --> s0
  state s0 {
    [*] --> s1
    state s1 {
      [*] --> s11
      state s11 {
      }
    }
    state s2 {
      [*] --> s21
      state s21 {
        [*] --> s211
        state s211 {
        }
        state s212 {
        }
      }
    }
  }
}
  s0 --> s211 : E
  s0 --> s212 : E2
    s1 --> s1 : A
    s1 --> s11 : B
    s1 --> s2 : C
    s1 --> s0 : D
    s1 --> s211 : F
      s11 --> s211 : G
    s2 --> s1 : C
    s2 --> s11 : F
      s21 --> s211 : B
      s21 --> s21 : H
        s211 --> s21 : B
        s211 --> s0 : G
        s211 --> s11 : None [omitted guard]
@enduml
