freepascal protected constructor Непубличный конструктор - Warning: Constructor should be public

В freepascal конструктор класса можно объявить как непубличный и программа выполнится:

type
  Cat = class
  public

   name: string;
   procedure sayHello();

  protected
    // fpc будет запускать такой конструктор как публичный
    constructor create(nameValue: string);
  end;

constructor Cat.create(nameValue: string);
begin
   self.name := nameValue;
end;

procedure Cat.sayHello();
begin
 writeln('Привет, я '  + self.name + '!');
end;

var
  CatItem: Cat;
begin
  CatItem := Cat.create('Мурка');
  CatItem.sayHello();
end.

Но при компиляции будет выведено предупреждение (хотя программа заработает):

project1.lpr(10,5) Warning: Constructor should be public

Key Words for FKN + antitotal forum (CS VSU):