* `SymmetricChecker` and `InverseChecker` use `ConnectionCheckerHelper::findStatement`.
* `ConnectionCheckerHelper::findStatement`’s interface was designed for `ItemChecker`, `TargetRequiredClaimChecker` and `ConflictsWithChecker`, which need to support //unknown value// and //no value//, so they can’t just use `EntityId` objects directly.
* `ItemIdSnakValue` encapsulates an `ItemId`, //unknown value//, or //no value//, but not other kinds of entity IDs, since “item requires claim”, “target requires claim” and “conflicts with” constraints only support items as the (un)expected values.
* As an unintended consequence, `SymmetricChecker` and `InverseChecker` don’t work on properties, since the expected value in their case is the entity (ID) with the constraint.
This apparently causes lots of log errors, which are the subject of {T170599}.
The best place to break this up is probably the first bullet point – split `findStatement` into `findStatementWithEntityId` and `findStatementWithItemIdSnakValue`.