### uml: class diagram
```plantuml
@startuml
package "YASE Behavior Tree Architecture" #DDDDDD {

    note right of BehaviorNode 
        The blackboard allows to access symbols and the 
        extension allows to extend use case specific methods.
    end note

    class BehaviorNode {
        + lookUpSymbol()
        + declareSymbol()
        + virtual tick()
        + blackboard
        + extension
    }
    

    BehaviorNode <|-- Composite
    BehaviorNode <|-- Decorator
    BehaviorNode <|-- Action

    class Decorator {
        + child
        + setChild()
    }
    class Action
    class Composite {
        + addChild()
        + children
    }

    Composite <|-- Sequence
    Composite <|-- Parallel
    Composite <|-- Selector

    class Sequence 
    class Parallel 
    class Selector 

    Decorator <|-- DataDeclarationNode
    Decorator <|-- DataProxyNode
    Decorator <|-- ServiceNode
    Decorator <|-- ConstraintNode
    Decorator <|-- InverterNode
    Decorator <|-- ExecuteUntilFailureNode

    class DataDeclarationNode 
    class DataProxyNode
    class ServiceNode
    class ConstraintNode
    class InverterNode
    class ExecuteUntilFailureNode

    Action <|-- TaskNode
    Action <|-- UnitTestHelper

    class TaskNode 
    class UnitTestHelper 

@enduml
```