Recursão - Duplique cada caractere de uma entrada de string e corte o último caractere posteriormente com um método

Eu tenho o seguinte problema.

O método recursivo estático público String doSomeMagic ("Test") deve retornar:

TTeesstt
TTeess
TTee
TT

Eu já implementei esse comportamento assim:

public static String rowFunction(String s) {
    String toReturn = new String();

    if (!s.isEmpty()) {
        toReturn = String.valueOf(s.charAt(0));
        toReturn += toReturn + rowFunction(s.substring(1));
    }
    return toReturn;
}

public static String doSomeMagic(String s) {
    String toReturn = new String();

    if (!s.isEmpty()) {
        toReturn = rowFunction(s) + "\n" + doSomeMagic(s.substring(0, s.length() - 1));
    }
    return toReturn;
}

Como alguém pode conseguir isso com apenas uma função? Alguma ideia?

questionAnswers(3)

yourAnswerToTheQuestion