Почему в следующей ситуации под 0 элементом в массиве находиться именно getStackTrace() Как я понял (могу ошибаться) в стек заноситься функция которая вызвала другую, но getStackTrace() не вызывает другого метода или это происходит внутри его написанного кода ? И почему тогда в стек не занесли currentThread() он же вызвал метод getStackTrace().
public static String method2() {
        method3();
        //напишите тут ваш код
        StackTraceElement[] elements = Thread.currentThread().getStackTrace();
        return elements[2].getMethodName();
    }