digraph {
    node [shape="point"]
    Call [label="Call",shape="oval"]
    Phase [label="'call'",shape="oval",color="blue"]
    NewPhase [label="'finish'",shape="oval",color="green"]
    Param [color="red"]
    NPhase [label="'init'",shape="oval",color="green"]
    NEvalStack [color="green"]
    NSymbols [color="green"]
    NewFrame [color="green"]
    NewReturnValue [color="green"]
    
    Root -> UserRoot [label="username"]
    UserRoot -> Frame [label="'frame'",color="blue",style="dashed"]
    UserRoot -> NewFrame [label="'frame'",color="green",penwidth=4]
    Frame -> Call [label="'IP'"]
    Frame -> Phase [label="'phase'",color="blue",style="dashed"]
    Frame -> NewPhase [label="'phase'",color="green",penwidth=4]
    Call -> Param [label="'last_param'",color="red",style="dotted"]
    Frame -> ReturnValue [label="'returnvalue'"]
    ReturnValue -> Body [label="'body'"]

    NewFrame -> NEvalStack [label="'evalstack'",color="green",penwidth=4]
    NewFrame -> NSymbols [label="'symbols'",color="green",penwidth=4]
    NewFrame -> NPhase [label="'phase'",color="green",penwidth=4]
    NewFrame -> Frame [label="'prev'",color="green",penwidth=4]
    NewFrame -> Call [label="'caller'",color="green",penwidth=4]
    NewFrame -> Body [label="'IP'", color="green",penwidth=4]
    NewFrame -> NewReturnValue [label="'returnvalue'",color="green",penwidth=4]
}
