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, _) | Vswitch (s,_) | Vcall (s, _, _, _) -> 
        (1, s.sid)
    | Vloop (_, s) -> (2, s.sid)
    | Vloop2 (_, n) -> (3, n)
    | 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)