import java import semmle.code.java.dataflow.DataFlow module Config implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node n) { n.asExpr().(ClassInstanceExpr).getType().(RefType).getASupertype*().hasName("Source") } predicate isSink(DataFlow::Node n) { n.asExpr().(Argument).getCall().getCallee().hasName("sink") } } module Flow = DataFlow::Global; from DataFlow::Node src, DataFlow::Node sink where Flow::flow(src, sink) select src, sink