private static synchronized Cache<String, SearchArgument> initializeAndGetSargsCache(Configuration conf) {
    if (sargsCache == null) {
      sargsCache = CacheBuilder.newBuilder()
            .weigher((String key, SearchArgument value) -> key.length())
            .maximumWeight(
                HiveConf.getIntVar(conf,
                                   HiveConf.ConfVars.HIVE_IO_SARG_CACHE_MAX_WEIGHT_MB) * 1024 *1024
            )
            .build(); // Can't use CacheLoader because SearchArguments may be built either from Kryo strings,
                      // or from expressions.
    }
    return sargsCache;
  }
Do the recursive parse of the Hive ExprNodeDesc into our ExpressionTree.
@param expression the Hive ExprNodeDesc
ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java