public function generate(ImprovedClassSource $classSource) { //Building class. $classCode = $this->builderFactory->class($classSource->getName()); //Add parent to class. if ($classSource->hasParent()) { $classCode->extend($classSource->getParentName()); } //Add interfaces foreach ($classSource->getInterfaces() as $interface) { $classCode->implement($interface->getName()); } //Add traits foreach ($classSource->getTraits() as $trait) { $classCode->addStmt($this->createTrait($trait)); } foreach ($classSource->getProperties() as $property) { $classCode->addStmt($this->createClassProperty($property)); } return $classCode; }