@startuml

scale 3/4

package parsed {
  ActionType - Action
  Action <|-- BaseAction
  BaseAction <|-- CommandAction
  BaseAction <|-- GMCPAction
  BaseAction <|-- MoveAction
  BaseAction <|-- SimpleAction
  Direction -- MoveAction
  Direction -- SimpleAction

  +interface Action {
    <default> ActionType getActionType()
    MudConnection getConnection()
    void setConnection(MudConnection connection)
  }

  +enum ActionType <<Lombok>> {
    +{static}UNKNOWN

    +{static}COMMAND
    +{static}GMCP
    +{static}MOVE
    +{static}SIMPLE
  }

  +enum Direction <<Lombok>> {
    +{static}UNKNOWN

    +{static}NORTH
    +{static}SOUTH
    +{static}EAST
    +{static}WEST
    +{static}NORTHWEST
    +{static}NORTHEAST
    +{static}SOUTHWEST
    +{static}SOUTHEAST
    +{static}UP
    +{static}DOWN
    +{static}IN
    +{static}OUT
    +{static}FROM
    {static} Direction fromExpression(String expression)
  }

  +class BaseAction <<Lombok.Data>> {
    -MudConnection connection
  }

}


@enduml