@startuml
skinparam linetype ortho
class MapNodeProperties
MapNodeProperties --> HashMap
MapNodeProperties --> Map
MapNodeProperties --> Optional
class Node
Node --> MapNodeProperties
Node --> NodeProperties
Node --> List
class NodeProperties
NodeProperties --> Optional
class Rule
Rule --> Node
Rule --> Optional
class Completer
class LastRule
LastRule --> Node
LastRule --> Rule
LastRule --> Optional
class DivideRule
DivideRule --> Node
DivideRule --> Rule
DivideRule --> State
DivideRule --> ArrayList
DivideRule --> List
DivideRule --> Optional
DivideRule --> Collectors
class PrefixRule
PrefixRule --> Node
PrefixRule --> Rule
PrefixRule --> Optional
class StringRule
StringRule --> Node
StringRule --> Rule
StringRule --> Optional
class SuffixRule
SuffixRule --> Node
SuffixRule --> Rule
SuffixRule --> Optional
class StripRule
StripRule --> Node
StripRule --> Rule
StripRule --> Optional
class Main
Main --> Node
Main --> DivideRule
Main --> LastRule
Main --> PrefixRule
Main --> StringRule
Main --> StripRule
Main --> SuffixRule
Main --> IOException
Main --> Files
Main --> Path
Main --> Paths
Main --> ArrayList
Main --> Optional
Main --> Collectors
class State
State --> ArrayList
State --> List
@enduml