private ExprNodeDesc deserializeExpr(byte[] exprBytes) throws MetaException {
    ExprNodeDesc expr = null;
    try {
      expr = SerializationUtilities.deserializeObjectWithTypeInformation(exprBytes, true);
    } catch (Exception ex) {
      LOG.error("Failed to deserialize the expression, fall back to deserializeObjectFromKryo", ex);
      try {
        expr = SerializationUtilities.deserializeObjectFromKryo(exprBytes, ExprNodeGenericFuncDesc.class);
      } catch (Exception e) {
        LOG.error("Failed to deserialize the expression", e);
        throw new MetaException("SerializationUtilities#deserializeObjectWithTypeInformation: " + ex.getMessage() +
            ", SerializationUtilities#deserializeObjectFromKryo: " + e.getMessage());
      }
    }
    if (expr == null) {
      throw new MetaException("Failed to deserialize expression - ExprNodeDesc not present");
    }
    return expr;
  }
The basic implementation of PartitionExpressionProxy that uses ql package classes.
ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionExpressionForMetastore.java