docs: def SendReply(self, response, tag=None):
      """Allows this flow to send a message to its parent flow.
  
      If this flow does not have a parent, the message is ignored.
  
      Args:
        response: An RDFValue() instance to be sent to the parent.
        tag: If specified, tag the result with this tag.
  
      Raises:
        ValueError: If responses is not of the correct type.
      """
      if not isinstance(response, rdfvalue.RDFValue):
        raise ValueError("SendReply can only send RDFValues")
  
      if self.rdf_flow.parent_flow_id:
        response = rdf_flow_objects.FlowResponse(
            client_id=self.rdf_flow.client_id,
            request_id=self.rdf_flow.parent_request_id,
            response_id=self.GetNextResponseId(),
            payload=response,
            flow_id=self.rdf_flow.parent_flow_id,
            tag=tag)
  
        self.flow_responses.append(response)
      else:
        reply = rdf_flow_objects.FlowResult(
            client_id=self.rdf_flow.client_id,
            flow_id=self.rdf_flow.flow_id,
            hunt_id=self.rdf_flow.parent_hunt_id,
            payload=response,
            tag=tag)
        self.replies_to_write.append(reply)
        self.replies_to_process.append(reply)
  
      self.rdf_flow.num_replies_sent += 1