digraph {
    node [shape="point"]
    Phase [label="'value'",shape="oval",color="blue"]
    Inst [label="Assign",shape="oval"]
    NewEvalStack [color="green"]
    StackPhase [label="'assign'",shape="oval",color="green"]
    NewPhase [label="'init'",shape="oval",color="green"]

    Root -> UserRoot [label="username"]
    UserRoot -> Frame [label="'frame'"]
    Frame -> Phase [label="'phase'",color="blue",style="dashed"]
    Frame -> NewPhase [label="'phase'",color="green",penwidth=4]
    Frame -> NewEvalStack [label="'evalstack'",color="green",penwidth=4]
    Frame -> OldEvalStack [label="'evalstack'",color="blue",style="dashed"]
    NewEvalStack -> OldEvalStack [label="'prev'",color="green",penwidth=4]
    Frame -> Inst [label="'IP'",color="blue",style="dashed"]
    Inst -> Cond [label="'value'"]
    OldEvalStack -> Inst [label="'inst'",color="green",penwidth=4]
    OldEvalStack -> StackPhase [label="'phase'",color="green",penwidth=4]
    Frame -> Cond [label="'IP'",color="green",penwidth=4]
    Frame -> Returnvalue [label="'returnvalue'"]
    Frame -> Returnvalue [label="'variable'",color="green",penwidth=4]
}
