code: def get_vulnerability_chains(
      current_node,
      sink,
      def_use,
      chain=[]
  ):
      
      for use in def_use[current_node]:
          if use == sink:
              yield chain
          else:
              vuln_chain = list(chain)
              vuln_chain.append(use)
              yield from get_vulnerability_chains(
                  use,
                  sink,
                  def_use,
                  vuln_chain
              )
docs: Traverses the def-use graph to find all paths from source to sink that cause a vulnerability.
  
      Args:
          current_node()
          sink()
          def_use(dict):
          chain(list(Node)): A path of nodes between source and sink.