Java 8 Comparator nullFirst naturalOrder перепутан

это может быть простой вопрос, но я хотел бы понять это ясно ...

У меня есть такой код:

public final class Persona
{
   private final int id;
   private final String name
   public Persona(final int id,final String name)
   {
       this.id = id;
       this.name = name;
   }
   public int getId(){return id;}    
   public String getName(){return name;}     
   @Override
   public String toString(){return "Persona{" + "id=" + id + ", name=" + name+'}';}    
 }

И я тестирую этот код:

import static java.util.Comparator.*;
private void nullsFirstTesting()
{               
    final Comparator<Persona>comparator = comparing(Persona::getName,nullsFirst(naturalOrder()));
    final List<Persona>persons = Arrays.asList(new Persona(1,"Cristian"),new Persona(2,"Guadalupe"),new Persona(3,"Cristina"),new Persona(4,"Chinga"),new Persona(5,null));
    persons
            .stream()
            .sorted(comparator)
            .forEach(System.out::println);                           
}

Это показывает следующие результаты:

Persona{id=5, name=null}
Persona{id=4, name=Chinga}
Persona{id=1, name=Cristian}
Persona{id=3, name=Cristina}
Persona{id=2, name=Guadalupe}

Эти результаты меня устраивают, но у меня проблемы с пониманием.

Когда я игнорируюnew Persona(5,null)&nbsp;Объект и передать компаратор:

final Comparator<Persona>comparator = comparing(Persona::getName);

Отлично работает. Моя сортировка поnatural order of name property, Проблема возникает, когда я добавляю объект сname=nullЯ просто подумал, что мне нужен мой компаратор, как это.

final Comparator<Persona>comparator = comparing(Persona::getName,nullsFirst());

Моя мысль былаошибочный: "ОК, если имя не нулевое, они сортируются вnatural order of nameтак же, как предыдущий компаратор, и если ониnull&nbsp;они будут первымино мои ненулевые имена все равно будут отсортированы в естественном порядке».

Но правильный код таков:

final Comparator<Persona>comparator = comparing(Persona::getName,nullsFirst(naturalOrder()));

Я не понимаю параметр дляnullsFirst, Я просто подумалnatural order of name&nbsp;явно [по умолчанию] даже обрабатыватьnull&nbsp;ценности.

Но документы говорят:

Возвращает нулевой дружественный компаратор, который считаетnull&nbsp;быть меньше, чем ненулевой. Когда обаnullони считаются равными. Если оба не равны NULL, указанныйComparator&nbsp;используется для определения порядка. Если указанный компараторnull, тогда возвращенный компаратор считает все ненулевые значения равными.

Эта строка: «Если оба ненулевые, указаннаяComparator&nbsp;используется для определения порядка. "

Меня смущает, когда и как следует явно устанавливать естественный порядок или когда они выводятся.