docs: @VisibleForTesting
      Expression getScopedCanonical(Expression expression, Predicate<Symbol> symbolScope)
      {
          Expression canonicalIndex = canonicalMap.get(expression);
          if (canonicalIndex == null) {
              return null;
          }
          return getCanonical(filter(equalitySets.get(canonicalIndex), symbolToExpressionPredicate(symbolScope)));
      }