Опытным путем установил что lineNumber нужно брать из предыдущего элемента стека. Но, у методов которые не вызывают другие методы он указывает на номер строки где вызывается getStackTrace(), а у методов, которые вызывают другие методы - на номер строки вызова другого метода. Так что это за поле и на что оно указывает может кто в двух словах объяснить? Или где можно об этом почитать, не нагуглил ничего особо. И что это за элемент на вершине стека по нулевому индексу, я думал там последний вызванный метод должен быть?
![]()

В Thread - ссылка на текущий поток(главный в моем случае), который - объект класса Thread
У него есть метод getStackTrace который я вызываю, а он вызывает констуктор Exception, который вызывает конструктор Throwable - и именно в нем формируется стектрейс, в котором на этот момент на вершине находиться вызов из объекта потока.
Во втором варианте конструктор вызывается из моего метода - соответственно он в голове стека.
Примерно так как-то?