class PageFunctionCompiler {

    public Supplier<PageProjection> compileProjection(RowExpression projection, Optional<String> classNameSuffix)
    {
        if (projectionCache == null) {
            return compileProjectionInternal(projection, classNameSuffix);
        }
        return projectionCache.getUnchecked(projection);
    }

    @Inject public  PageFunctionCompiler(Metadata metadata, CompilerConfig config);
    public  PageFunctionCompiler(Metadata metadata, int expressionCacheSize);

}