def METHOD_NAME(
    self, t: ndarray, stacked: bool = True, with_keys: bool = False
) -> Union[Dict, ndarray]:
    """Calculate solution of dynamics.
    Arguments
    ---------
    t
        Time steps at which to evaluate solution.
    stacked
        Whether to stack states or return them individually. Defaults to `True`.
    with_keys
        Whether to return solution labelled by variables in form of a dictionary.
        Defaults to `False`.
    Returns
    -------
    Union[Dict, ndarray]
        Solution of system. If `with_keys=True`, the solution is returned in form of
        a dictionary with variables as keys. Otherwise, the solution is given as
        a `numpy.ndarray` of form `(n_steps, 2)`.
    """
    expu = np.exp(-self.beta * t)
    exps = np.exp(-self.gamma * t)
    unspliced = self.u0 * expu + self.alpha / self.beta * (1 - expu)
    c = (self.alpha - self.u0 * self.beta) * invert(self.gamma - self.beta)
    spliced = (
        self.s0 * exps + self.alpha / self.gamma * (1 - exps) + c * (exps - expu)
    )
    if with_keys:
        return {"u": unspliced, "s": spliced}
    elif not stacked:
        return unspliced, spliced
    else:
        if isinstance(t, np.ndarray) and t.ndim == 2:
            return np.stack([unspliced, spliced], axis=2)
        else:
            return np.column_stack([unspliced, spliced])