let node_type_id t = match t with
    | Vstart -> (0, 0)
    | VfctIn -> (0, 1)
    | VfctOut -> (0, 2)
    | Vexit -> (0, 3)
    | Vend -> (0, 4)
    | Vstmt s | Vtest (true, s, _) | Vloop (_, s) | Vswitch (s,_)
    | VcallIn (s, _, _, _) -> (1, s.sid)
    | VblkIn (Bfct, _) -> (4, 0)
    | VblkIn (Bstmt s,_) -> (5, s.sid)
    | VblkIn (Bthen s,_) -> (6, s.sid)
    | VblkIn (Belse s,_) -> (7, s.sid)
    | VblkIn (Bloop s,_) -> (8, s.sid)
    | VblkOut (Bfct, _) -> (9, 0)
    | VblkOut (Bstmt s,_) -> (10, s.sid)
    | VblkOut (Bthen s,_) -> (11, s.sid)
    | VblkOut (Belse s,_) -> (12, s.sid)
    | VblkOut (Bloop s,_) -> (13, s.sid)
    | Vtest (false, s, _) -> (14, s.sid)
    | VcallOut (s, _, _, _) -> (2, s.sid)
    | VcallExit (s, _, _, _) -> (3, s.sid)