Почему доступ к частному члену вложенного класса можно получить с помощью методов входящего класса?

Может ли кто-нибудь рассказать мне об уровне доступа частного участника? Я довольно часто смутился с этим фрагментарным кодом: почему к частному члену k класса Line можно получить доступ к методу "print" класса outter?

public class myClass {
    public static class Line{
        private double k;
        private double b;
        private boolean isVertical;

        public Line(double k, double b, boolean isVertical){
            this.k = k;
            this.b = b;
            this.isVertical = isVertical;
        }

    }

    public static boolean print(Line line){
        System.out.println(line.k);
    }
}

Ответ 1

Правила находятся в главе JLS по доступности

В противном случае, если член или конструктор объявлен private, тогда доступ разрешен только тогда, когда он встречается внутри тела класс верхнего уровня (§7.6), который включает объявление члена или конструктор.

Здесь поле участника k объявляется в классе Line. Когда вы обращаетесь к нему в методе print, вы получаете доступ к нему внутри тела класса верхнего уровня, который включает объявление этого элемента.

В главе о классах верхнего уровня здесь.