Predicate readStep
Holds if data can flow from node1 to node2 via a read of c. Thus,
node1 references an object with a content c.getAReadContent() whose
value ends up in node2.
Store steps without corresponding reads are pruned aggressively very early, since they can never contribute to a complete path.
Import path
import codeql.actions.dataflow.internal.DataFlowPrivatepredicate readStep(Node node1, ContentSet c, Node node2)