public function hydrate(\stdClass $orientObject, Proxy $proxy = null)
    {
        $classProperty = static::ORIENT_PROPERTY_CLASS;

        if ($proxy) {
            $this->fill($proxy, $orientObject);

            return $proxy;

        } elseif (property_exists($orientObject, $classProperty)) {
            $orientClass = $orientObject->$classProperty;

            if ($orientClass) {
                $class       = $this->getMetadataFactory()->findClassMappingInDirectories($orientClass);
                $document    = $this->createDocument($class, $orientObject);

                return $document;
            }

            throw new DocumentNotFoundException(self::ORIENT_PROPERTY_CLASS.' property empty.');
        }

        throw new DocumentNotFoundException(self::ORIENT_PROPERTY_CLASS.' property not found.');
    }