let get_subgraph v =
    let mk_subgraph name attrib =
      let attrib = (`Style `Filled) :: attrib in
          Some { Graph.Graphviz.DotAttributes.sg_name= name;
                 Graph.Graphviz.DotAttributes.sg_attributes = attrib }
    in
    match N.elem_key v with
      | K.CallStmt call | K.SigCallKey (call, _) ->
          let call_stmt = K.call_from_id call in
          let name = "Call"^(string_of_int call_stmt.sid) in
          let call_txt =
            Pretty_utils.sfprintf "%a"
              (fun fmt ->
                 Cil.defaultCilPrinter#pStmtKind call_stmt fmt
              )
                        call_stmt.skind  in
          let call_txt = String.escaped call_txt in
          let attrib = [(`Label (name^" : "^call_txt))] in
          let attrib = (`Fillcolor 0xB38B4D) :: attrib in
            mk_subgraph name attrib
      | K.SigKey k ->
          let pack_inputs_outputs = false in
          if pack_inputs_outputs then
            begin
              let is_in =  match k with S.In _ -> true | _ -> false in
              let name = if is_in then "Inputs" else "Outputs" in
              let color = if is_in then 0x90EE90 else 0x6495ED in
              let attrib = [] in
              let attrib = (`Fillcolor color) :: attrib in
                mk_subgraph name attrib
            end
          else
            None
      | _ -> None