/**
* {@inheritDoc}
*/
public function guessType($object, $name, $classes)
{
$discriminants = [];
$required = $object->getRequired() ?: [];
foreach ($object->getProperties() as $key => $property) {
if (!in_array($key, $required)) {
continue;
}
if ($property instanceof Reference) {
$property = $this->resolver->resolve($property);
}
if ($property->getEnum() !== null) {
$isSimple = true;
foreach ($property->getEnum() as $value) {
if (is_array($value) || is_object($value)) {
$isSimple = false;
}
}
if ($isSimple) {
$discriminants[$key] = $property->getEnum();
}
} else {
$discriminants[$key] = null;
}
}
return new ObjectType($object, $this->naming->getClassName($name), $discriminants);
}