docs: public Object eval(
      Selector sel,
      MatchSpaceKey msg,
      EvalCache cache,
      Object contextValue,
      boolean permissive)
      throws BadMessageFormatMatchingException
    {
  
      // This method should never be applied to a selector that has marked itself invalid
      // during parsing.
      if (sel.getType() == Selector.INVALID)
        throw new IllegalArgumentException(); // sel.toString());
  
      Object ans;
  /** TEMPORARY DISABLE CACHING in THE EXTENDED CASE **/
      if (sel.getUniqueId() != 0 && !sel.isExtended())
      {
        ans = cache.getExprValue(sel.getUniqueId());
        if (ans != null)
          return ans;
      }
  
      ans = evalInternal(sel, msg, cache, contextValue, permissive);
      if (sel.getUniqueId() != 0)
        cache.saveExprValue(sel.getUniqueId(), ans);
      return ans;
    }