/**
  * {@inheritDoc}
  */
 protected function getPropertiesForClass(ActionInterface $action, CallableInterface $callable, $class)
 {
     if (!$this->metadataFactory->supportsClass($class)) {
         return [];
     }
     $metadata = $this->metadataFactory->loadMetadata($class);
     $reflectionClass = Reflection::loadClassReflection($class);
     $properties = [];
     foreach ($metadata->getProperties() as $propertyName => $property) {
         $properties[] = $reflectionClass->getProperty($propertyName);
     }
     return $properties;
 }
 /**
  * {@inheritDoc}
  */
 public function supportsClass($class)
 {
     if (is_object($class)) {
         $class = get_class($class);
     }
     $key = 'model_normalizer.annotated.classes';
     $classes = $this->cache->get($key);
     if (null === $classes) {
         $classes = [];
     }
     $mustUpdateCache = false;
     if (!isset($classes[$class])) {
         $supports = $this->delegate->supportsClass($class);
         $classes[$class] = $supports;
         $mustUpdateCache = true;
     } else {
         $supports = $classes[$class];
     }
     if ($mustUpdateCache) {
         $this->cache->set($key, $classes);
     }
     return $supports;
 }
 /**
  * {@inheritdoc}
  */
 public function supportsClass($class)
 {
     return $this->metadataFactory->supportsClass($class);
 }