public static function build()
{
if (class_exists('PhpParser\\ParserFactory')) {
$parserFactory = new ParserFactory();
$parser = $parserFactory->create(ParserFactory::PREFER_PHP5);
} else {
$parser = new Parser(new Lexer());
}
$resolver = new Resolver(Jane::buildSerializer());
$bodyParameter = new BodyParameterGenerator($parser, $resolver);
$pathParameter = new PathParameterGenerator($parser);
$formDataParameter = new FormDataParameterGenerator($parser);
$headerParameter = new HeaderParameterGenerator($parser);
$queryParameter = new QueryParameterGenerator($parser);
$operation = new OperationGenerator($resolver, $bodyParameter, $formDataParameter, $headerParameter, $pathParameter, $queryParameter);
$operationManager = new OperationManager();
$operationNaming = new ChainOperationNaming([new OperationIdNaming(), new OperationUrlNaming()]);
$client = new ClientGenerator($operationManager, $operation, $operationNaming);
return $client;
}