let add n kf pdg len fd list =
    match !Pdg.node_key n with
    | Key.SigKey (Signature.In Signature.InCtrl->
        (* do not consider node [InCtrl]  *)
        list
    | Key.VarDecl vi when not (Kernel.LibEntry.get () && vi.vglob) ->
        (* do not consider variable declaration,
           except if libEntry is set and they are globals
           (i.e. we could have no further info about them) *)

        list
    | _ ->
        Security_slicing_parameters.debug ~level:2 "adding node %a (in %s)"
          (!Pdg.pretty_node false) n
          (Kernel_function.get_name kf);
        { node = n; kf = kf; pdg = pdg;
          callstack_length = len; from_deep = fd }
        :: list