def METHOD_NAME(
    self,
    *results: Union[Value, Tuple[Value, ...]],
) -> Optional[Union[int, np.ndarray, Tuple[Optional[Union[int, np.ndarray]], ...]]]:
    """
    Decrypt result(s) of evaluation.
    Args:
        *results (Union[Value, Tuple[Value, ...]]):
            result(s) of evaluation
    Returns:
        Optional[Union[int, np.ndarray, Tuple[Optional[Union[int, np.ndarray]], ...]]]:
            decrypted result(s) of evaluation
    """
    flattened_results: List[Value] = []
    for result in results:
        if isinstance(result, tuple):  # pragma: no cover
            # this branch is impossible to cover without multiple outputs
            flattened_results.extend(result)
        else:
            flattened_results.append(result)
    self.keygen(force=False)
    keyset = self.keys._keyset  # pylint: disable=protected-access
    decrypter = ValueDecrypter.new(keyset, self.specs.client_parameters)
    decrypted = tuple(
        decrypter.METHOD_NAME(position, result.inner)
        for position, result in enumerate(flattened_results)
    )
    return decrypted if len(decrypted) != 1 else decrypted[0]