`include InferModules.TraceElem.S`
`type t`````
`include sig ... end`
`val compare : t ‑> t ‑> int`
`module Kind : InferModules.TraceElem.Kind`
`val call_site : t ‑> InferIR.CallSite.t`
`val kind : t ‑> Kind.t`
`val make : ?⁠indexes:InferStdlib.IntSet.t ‑> Kind.t ‑> InferIR.CallSite.t ‑> t`
`val with_callsite : t ‑> InferIR.CallSite.t ‑> t`
`val pp : InferModules.TraceElem.F.formatter ‑> t ‑> unit`
`module Set : InferStdlib.PrettyPrintable.PPSet with type PPSet.elt = t`
`type spec````=` `{`

`source : t;` | (** type of the returned source *)
`index : int option;` | (** index of the returned source if Some; return value if None *)

`}```
`val get : InferIR.CallSite.t ‑> InferIR.HilExp.t list ‑> InferIR.Tenv.t ‑> spec option`

return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

`val get_tainted_formals : InferIR.Procdesc.t ‑> InferIR.Tenv.t ‑> (InferIR.Mangled.t * InferIR.Typ.t * t option) list`

return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source