'Send list of responses to this message.  Responses passed here
are JSON-ified.  Targeted messages have a single response while
Broadcast messages may have multiple responses.
If this cell was the source of the message, these responses will
be returned from self.process().
Otherwise, we will route the response to the source of the
request.  If \'neighbor_only\' is True, the response will be sent
to the neighbor cell, not the original requester.  Broadcast
messages get aggregated at each hop, so neighbor_only will be
True for those messages.'

def _send_json_responses(self, json_responses, neighbor_only=False, fanout=False):

    if (not self.need_response):
        return
    if self.source_is_us():
        responses = []
        for json_response in json_responses:
            responses.append(Response.from_json(self.ctxt, json_response))
        return responses
    direction = (((self.direction == 'up') and 'down') or 'up')
    response_kwargs = {'orig_message': self.to_json(), 'responses': json_responses}
    target_cell = _response_cell_name_from_path(self.routing_path, neighbor_only=neighbor_only)
    response = self.msg_runner._create_response_message(self.ctxt, direction, target_cell, self.uuid, response_kwargs, fanout=fanout)
    response.process()
