public static function build(MetaClass $class)
    {
        $out = self::getHead();
        $parent = $class->getParent();
        if ($class->hasBuildableParent()) {
            $parentName = 'Proto' . $parent->getName();
            $uses = "{$parent->getProtoNamespace()}\\{$parentName}";
        } else {
            $parentName = 'AbstractProtoClass';
            $uses = AbstractProtoClass::class;
        }
        $out .= <<<EOT
namespace {$class->getAutoProtoNamespace()};

use {$uses};


EOT;
        $out .= <<<EOT
abstract class AutoProto{$class->getName()} extends {$parentName}
{
EOT;
        $classDump = self::dumpMetaClass($class);
        $out .= <<<EOT

{$classDump}
}

EOT;
        return $out . self::getHeel();
    }