public static function create(SerializerInterface $serializer)
{
$chainGuesser = ChainGuesserFactory::create($serializer);
$naming = new Naming();
$merger = new JsonSchemaMerger();
$resolver = new Resolver($serializer);
$chainGuesser->addGuesser(new SimpleTypeGuesser());
$chainGuesser->addGuesser(new ArrayGuesser());
$chainGuesser->addGuesser(new MultipleGuesser());
$chainGuesser->addGuesser(new ObjectGuesser($naming, $resolver));
$chainGuesser->addGuesser(new DefinitionGuesser());
$chainGuesser->addGuesser(new ItemsGuesser());
$chainGuesser->addGuesser(new AnyOfGuesser());
$chainGuesser->addGuesser(new AllOfGuesser($resolver));
$chainGuesser->addGuesser(new OneOfGuesser());
$chainGuesser->addGuesser(new ObjectOneOfGuesser($merger, $resolver));
$chainGuesser->addGuesser(new PatternPropertiesGuesser());
$chainGuesser->addGuesser(new AdditionalItemsGuesser());
$chainGuesser->addGuesser(new AdditionalPropertiesGuesser());
return $chainGuesser;
}