/** * @param array $definition * @param ClassConst[] $constants * @param $versions * * @return PhpParser\Node * */ private function createValueClassFromVersions(array $definition, $constants, $versions) { $className = $this->getClassName($definition); $factory = new BuilderFactory(); return $factory->namespace($this->getNamespace($definition))->addStmt($factory->class($className)->addStmts($constants)->addStmt($this->createValueField($factory, Helper::createArray($versions)))->addStmt($this->createAllowedVersionsField($factory, Helper::createArray(array_keys($versions))))->addStmt($this->createGetValueMethod($factory, $className))->addStmt($this->createHasValueMethod($factory, $className))->addStmt($this->createGetDefaultVersionMethod($factory, $this->getDefaultVersion($definition)))->addStmt($this->createIsVersionAllowedMethod($factory, $className)))->getNode(); }