public function getPropertyValue($user, $property = self::LOGIN_PROPERTY, $strict = false)
    {
        if ($this->checkProperty($property, $strict)) {
            $oid = spl_object_hash($user);
            if (null !== $cacheHit = $this->resolveCache($oid, $property)) {
                return $cacheHit;
            }

            if (is_string($this->properties[$property])) {
                $this->properties[$property] = new ReflectionProperty($user, $this->properties[$property]);
            }
            $this->properties[$property]->setAccessible(true);

            return $this->lazyValueCache[$oid][$property] = $this->properties[$property]->getValue($user);
        }
    }