def separate_prediction(predicted_outputs, true_outputs, name_of_void):
    """
    Gives the index of good/bad/not predicted
    :param predicted_outputs: possible_outputs_list predicted, decoded (human-readable)
    :param true_outputs: true possible_outputs_list, decoded  (human-readable)
    :param name_of_void: label (decoded) of special class (typically 0 hence void)

    :return: indexes of (bad predictions, good prediction, name_of_void predictions)
    :rtype: array(int), array(int), array(int)
    """
    index_bad_predicted = set()
    index_well_predicted = set()
    index_not_predicted = set()
    for index, prediction in enumerate(predicted_outputs):
        """
        logging.info(name_of_void)
        logging.info(y_true[i])
        """
        if name_of_void == true_outputs[index]:
            index_not_predicted.add(index)
        if prediction == true_outputs[index]:
            index_well_predicted.add(index)
        else:
            index_bad_predicted.add(index)
    return index_bad_predicted, index_well_predicted, index_not_predicted
