@startuml
node core {
    [Java parser] <-- [AST]
    [Javadoc parser]
    [AST] <-- [lexical preserving printer]
    [AST] <-- [concrete syntax model]
    [concrete syntax model] <-- [lexical preserving printer]
    events <-- [lexical preserving printer]
    [AST] <-- [comments inserter]
    [AST] <-- [visitors]
    [AST] <-- [meta model]
    [AST] <-- [pretty printer]
    [visitors] <-- [pretty printer]
    [AST] - symbol_resolution
    [AST] - events
    [visitors] <-- [code generators]
    [AST] <-- [code generators]
    [meta model] <-- [code generators]
    [AST] <-- [JSON (de)serializer]
    [Java parser] <- [source root]
}
node symbol-solver {
    [AST] <- [model]
    symbol_resolution <- [model]
    [model] <-- [core]
    [model] <-- [logic]
    [logic] <-- [core]
}
@enduml