abstract public function getEntityName(): string;
final public function getFields(): CompiledFieldCollection
{ if ($this->fields !== null
) { return $this->fields;
} $fields =
$this->
defineFields();
foreach ($this->
defaultFields() as $field) { $fields->
add($field);
} foreach ($this->extensions
as $extension) { $new =
new FieldCollection();
$extension->
extendFields($new);
foreach ($new as $field) { $field->
addFlags(new Extension());