getAnnotationsOfType([AnnotationSchema::class, AttributeSchema::class], true); foreach ($schemas as $schema) { if ($schema->_context->is('class') || $schema->_context->is('trait')) { $source = $schema->_context->class ?: $schema->_context->trait; $traits = $analysis->getTraitsOfClass($schema->_context->fullyQualifiedName($source), true); $existing = []; foreach ($traits as $trait) { $traitSchema = $analysis->getSchemaForSource($trait['context']->fullyQualifiedName($trait['trait'])); if ($traitSchema) { $refPath = !Generator::isDefault($traitSchema->schema) ? $traitSchema->schema : $trait['trait']; $this->inheritFrom($schema, $traitSchema, $refPath, $trait['context']); } else { if ($schema->_context->is('class')) { $this->mergeAnnotations($schema, $trait, $existing); $this->mergeMethods($schema, $trait, $existing); $this->mergeProperties($schema, $trait, $existing); } } } } } } }