code: def detect_unused_return_values(self, f):
          
          values_returned = []
          nodes_origin = {}
          for n in f.nodes:
              for ir in n.irs:
                  if isinstance(ir, HighLevelCall):
                      # if a return value is stored in a state variable, it's ok
                      if ir.lvalue and not isinstance(ir.lvalue, StateVariable):
                          values_returned.append(ir.lvalue)
                          nodes_origin[ir.lvalue] = ir
                  for read in ir.read:
                      if read in values_returned:
                          values_returned.remove(read)
  
          return [nodes_origin[value].node for value in values_returned]
docs: Return the nodes where the return value of a call is unused
          Args:
              f (Function)
          Returns:
              list(Node)