code: public static ExtractionResult fromPredicate(
              Metadata metadata,
              Session session,
              Expression predicate,
              TypeProvider types)
      {
          return new Visitor(metadata, session, types).process(predicate, false);
      }
docs: Convert an Expression predicate into an ExtractionResult consisting of:
  1) A successfully extracted TupleDomain
  2) An Expression fragment which represents the part of the original Expression that will need to be re-evaluated
  after filtering with the TupleDomain.