protected function extractName(ModelStubInterface $model, $name)
    {
        if ($model->getObjectPrototype() instanceof HydratorAwareInterface) {
            $objectHydrator = $model->getObjectPrototype()->getHydrator();
            
            if (!$objectHydrator || !method_exists($objectHydrator, 'hydrateName')) {
                throw new Exception\RuntimeException(
                    'Object hydrator must be set and must have hydrateName() ' .
                    'in order to convert a single field'
                    );
            }
            $name = $objectHydrator->hydrateName($name);
        }

        $modelHydrator = $model->getHydrator();
        if (!$modelHydrator || !method_exists($modelHydrator, 'extractName')) {
            throw new Exception\RuntimeException(
                'Model hydrator must be set and must have extractName() method ' .
                'in order to convert a single field'
                );
        }
        
        return $modelHydrator->extractName($name);
    }