@startuml ' package definition package "com.bitplan.graph" { class Hierarchy { - String rootType - List links - Map linksByName - boolean linkViaEdges + void setLinkViaEdges(boolean) + boolean isLinkViaEdges() + Hierarchy() + void setRootType(String) + String getRootType() + List getLinks() + Link getLink(String) + void addLink(Link) + void addRelation(String, String, String, String) + void addUpRelation(String, String, String) + void addRelations(String, String, String, String...) + void addUpRelations(String, String, String...) + List getChildLinks(String) + void showDebug() } class "Hierarchy.Link" as Link { + String name + String parentType + String parentRole + String childRole + String childType + Direction direction + Link(String, String, String, String, Direction) + static String makeLinkName(String, String, String, Direction) } enum "Hierarchy.Direction" as Direction { OUT IN } Hierarchy "1" *-- "*" Link : contains Link ..> Direction : direction @enduml