You can greatly simplify this block by using the `PropertyPathBuilder` class.

```php
$pathBuilder = new PropertyPathBuilder($this->context->getPropertyPath());
$comparisonValue = $this->accessor->getValue(
    $this->context->getRoot(),
    $pathBuilder->replace(-1, 1, $constraint->property)
);
$valueIndiators[] = $constraint->property;
```
You need to modify `PropertyPathBuilder` to accept strings also where it currently only accepts `PropertyPathInterface` instances (by wrapping the strings in `PropertyPath` objects). You also need to modify `PropertyPathBuilder::replace()` to accept negative offsets (should be easy to implement).

You should also inject the `PropertyAccessorInterface` instance in the constructor of this class. Future accessor versions will support optimizations and caching, so there will be one system-wide `PropertyAccessor` only (which is already available as "property_accessor" service in the DIC).