class RawCollectorExpression extends LuceneCollectorExpression<String> {

    private SourceLookup sourceLookup;
    private ReaderContext context;

    @Override
    public void startCollect(CollectorContext context) {
        this.sourceLookup = context.sourceLookup();
    }

    @Override
    public void setNextDocId(int doc) {
        sourceLookup.setSegmentAndDocument(context, doc);
    }

    @Override
    public void setNextReader(ReaderContext context) throws IOException {
        this.context = context;
    }

    @Override
    public String value() {<FILL_FUNCTION_BODY>}
}

        try {
            return CompressorFactory.uncompressIfNeeded(sourceLookup.rawSource()).utf8ToString();
        } catch (IOException e) {
            throw new RuntimeException("Failed to uncompress source", e);
        }
    
<methods>public void setNextDocId(int) ,public void setNextReader(io.crate.execution.engine.fetch.ReaderContext) throws java.io.IOException,public void setScorer(Scorable) ,public void startCollect(io.crate.expression.reference.doc.lucene.CollectorContext) <variables>