digraph class_model {
    rankdir=BT ;
    subgraph cluster1 {
        style=invisible ;
        Component         [label="Component", shape=box] ;
    } ;
    subgraph cluster2 {
        style=invisible ;
        ConcreteComponent [label="ConcreteComponent", shape=box] ;
        ConcreteComponent -> Component [arrowhead="empty"] ;
    } ;
    subgraph cluster3 {
        style=invisible ;
        Decorator         [label="Decorator", shape=box] ;
        ConcreteDecorator [label="ConcreteDecorator", shape=box] ;
        Decorator         -> Component [arrowhead="empty"] ;
        Decorator         -> Component [headport="e",tailport="e",dir="forward",
                                        arrowhead="none",arrowtail="odiamond"] ;
        ConcreteDecorator -> Decorator [arrowhead="empty"] ;
    }
}