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