code: public static List<FunctionCall> extractSupportedSpatialFunctions(Expression filterExpression)
      {
          return extractConjuncts(filterExpression).stream()
                  .filter(FunctionCall.class::isInstance)
                  .map(FunctionCall.class::cast)
                  .filter(SpatialJoinUtils::isSupportedSpatialFunction)
                  .collect(toImmutableList());
      }
docs: Returns a subset of conjuncts matching one of the following shapes:
  - ST_Contains(...)
  - ST_Within(...)
  - ST_Intersects(...)
  <p>
  Doesn't check or guarantee anything about function arguments.