public function __construct($name, array $declaredSuperTypes, array $configuration, array $fullConfiguration = null)
{
$this->name = $name;
foreach ($declaredSuperTypes as $type) {
if ($type !== null && !$type instanceof NodeType) {
throw new \InvalidArgumentException('$declaredSuperTypes must be an array of NodeType objects', 1291300950);
}
}
$this->declaredSuperTypes = $declaredSuperTypes;
if (isset($configuration['abstract']) && $configuration['abstract'] === true) {
$this->abstract = true;
unset($configuration['abstract']);
}
if (isset($configuration['final']) && $configuration['final'] === true) {
$this->final = true;
unset($configuration['final']);
}
$this->localConfiguration = $configuration;
$this->fullConfiguration = $fullConfiguration;
if ($fullConfiguration !== null) {
$this->initialized = true;
}
}