protected function _propertyInjection(
        $instance, PropertyInjection $property, ReflectionClass $classReflection)
    {
        // lets try to confirm it not prefixed by convention
        $public = trim($property->getPropertyName(), '_');
        $notPublic = "_{$public}";
        $propertyName = $classReflection->hasProperty($notPublic) ? $notPublic : $public;

        $propertyReflection = $classReflection->getProperty($propertyName);

        $value = $property->getValue();

        if ($value instanceof ObjectDefinition\EntryReference) {
            $value = $this->_container->get($value->getName());
        }

        if (!$propertyReflection->isPublic()) {
            $propertyReflection->setAccessible(true);
        }

        $propertyReflection->setValue($instance, $value);
    }