@startuml
skinparam linetype ortho
class PropertiesCompoundNode
PropertiesCompoundNode --> CompletingProperties
PropertiesCompoundNode --> List
class Transformer
Transformer --> CompoundNode
Transformer --> PropertiesCompoundNode
Transformer --> ArrayList
class MutableDivideState
MutableDivideState --> ArrayList
MutableDivideState --> List
MutableDivideState --> Stream
class InfixRule
InfixRule --> Rule
InfixRule --> MergingNode
InfixRule --> RuleResult
InfixRule --> OptionalLexResult
class NodeListRule
NodeListRule --> Rule
NodeListRule --> CompoundNode
NodeListRule --> PropertiesCompoundNode
NodeListRule --> DivideState
NodeListRule --> MutableDivideState
NodeListRule --> RuleResult
NodeListRule --> OptionalLexResult
NodeListRule --> ArrayList
NodeListRule --> List
NodeListRule --> Optional
NodeListRule --> Collectors
class DivideState
DivideState --> Stream
class RuleResult
RuleResult --> Optional
RuleResult --> Function
class StripRule
StripRule --> Rule
class MergingNode
class OptionalLexResult
OptionalLexResult --> RuleResult
OptionalLexResult --> Optional
OptionalLexResult --> Function
class Properties
Properties --> Map
Properties --> Optional
Properties --> Stream
class StringRule
StringRule --> Rule
StringRule --> CompoundNode
StringRule --> PropertiesCompoundNode
StringRule --> RuleResult
StringRule --> OptionalLexResult
class Rule
class Completer
Completer --> Properties
class PrefixRule
PrefixRule --> Rule
PrefixRule --> RuleResult
PrefixRule --> OptionalLexResult
class NodeListNode
NodeListNode --> Properties
NodeListNode --> List
class CompoundNode
CompoundNode --> MergingNode
CompoundNode --> NodeListNode
CompoundNode --> StringNode
class CompletingProperties
CompletingProperties --> Properties
CompletingProperties --> HashMap
CompletingProperties --> Map
CompletingProperties --> Optional
CompletingProperties --> Stream
class Lang
Lang --> CompoundNode
Lang --> NodeListRule
Lang --> InfixRule
Lang --> PrefixRule
Lang --> StringRule
Lang --> StripRule
Lang --> SuffixRule
Lang --> RuleResult
class Main
Main --> Compiler
Main --> IOException
Main --> Files
Main --> Path
Main --> Paths
Main --> Set
Main --> Collectors
class SuffixRule
SuffixRule --> Rule
SuffixRule --> RuleResult
SuffixRule --> OptionalLexResult
class Compiler
Compiler --> Lang
Compiler --> Transformer
class StringNode
StringNode --> Properties
@enduml