@startuml
skinparam linetype ortho
class MapLike
class SuffixRule
class JavaIOError
JavaIOError --> IOException
JavaIOError --> PrintWriter
JavaIOError --> StringWriter
class JavaList
JavaList --> ArrayList
JavaList --> List
class MutableState
class StreamLike
StreamLike --> Function
StreamLike --> Predicate
StreamLike --> Stream
class PrefixRule
class PathLike
PathLike --> Path
class StringRule
class StripRule
class Joiner
Joiner --> Optional
class Rule
class IOError
class Lists
class JavaPath
JavaPath --> IOException
JavaPath --> Files
JavaPath --> Path
class Node
class Collector
class OptionalLike
OptionalLike --> Consumer
OptionalLike --> Function
class ResultCollector
class State
class Result
Result --> Function
class JavaMap
JavaMap --> HashMap
JavaMap --> Map
class JavaStream
JavaStream --> Function
JavaStream --> Predicate
JavaStream --> Stream
class Ok
Ok --> Function
class LastRule
class SetLike
class JavaSet
JavaSet --> HashSet
JavaSet --> Set
class SetCollector
class Err
Err --> Function
class MapNode
class Sets
class Main
Main --> Files
Main --> Path
class Optionals
Optionals --> Optional
class Maps
class Paths
class ListLike
class JavaOptional
JavaOptional --> Optional
JavaOptional --> Consumer
JavaOptional --> Function

@enduml