private function assembleConstructor(Type $type)
{
$body = [];
$constructor = MethodGenerator::fromArray(['name' => '__construct', 'visibility' => MethodGenerator::VISIBILITY_PUBLIC]);
$docblock = DocBlockGenerator::fromArray(['shortdescription' => 'Constructor']);
foreach ($type->getProperties() as $property) {
$body[] = sprintf('$this->%1$s = $%1$s;', $property->getName());
$constructor->setParameter(['name' => $property->getName()]);
$docblock->setTag(['name' => 'var', 'description' => sprintf('%s $%s', $property->getType(), $property->getName())]);
}
$constructor->setDocBlock($docblock);
$constructor->setBody(implode($constructor::LINE_FEED, $body));
return $constructor;
}