/**
  * @param EmbeddedMetadataInterface $embeddedMetadata
  *
  * @return EmbeddedMetadataInterface
  */
 private function addNestedEmbeddedClasses(EmbeddedMetadataInterface $embeddedMetadata)
 {
     $reflClass = new \ReflectionClass($embeddedMetadata->getClassAttribute());
     foreach ($reflClass->getProperties() as $reflProperty) {
         if ($annotation = $this->reader->getPropertyAnnotation($reflProperty, Index::class)) {
             $embeddedMetadata->addEmbeddableClass(new IndexMetadata($reflProperty->class, $reflProperty->name, $annotation->name, $annotation->type));
         }
         if ($annotation = $this->reader->getPropertyAnnotation($reflProperty, Embedded::class)) {
             $nested = $this->addNestedEmbeddedClasses(new EmbeddedMetadata($reflProperty->class, $reflProperty->name, $annotation->class));
             $embeddedMetadata->addEmbeddableClass($nested);
         }
     }
     return $embeddedMetadata;
 }