code: private <O> OperatorSymbol resolve(Tag tag, Map<Name, List<O>> opMap, Predicate<O> opTestFunc,
                         Function<O, OperatorSymbol> resolveFunc, Supplier<OperatorSymbol> noResultFunc) {
          return opMap.get(operatorName(tag)).stream()
                  .filter(opTestFunc)
                  .map(resolveFunc)
                  .findFirst()
                  .orElseGet(noResultFunc);
      }
docs: Main operator lookup routine; lookup an operator (either unary or binary) in its corresponding
  map. If there's a matching operator, its resolve routine is called and the result is returned;
  otherwise the result of a fallback function is returned.