class GatheringModelProcessable extends AbstractGatheringModelProcessable {


    private final IEngineContext context;

    private int offset;




    GatheringModelProcessable(
            final IEngineConfiguration configuration, ProcessorTemplateHandler processorTemplateHandler, final IEngineContext context,
            final TemplateModelController modelController, final TemplateFlowController flowController,
            final SkipBody gatheredSkipBody, final boolean gatheredSkipCloseTag,
            final ProcessorExecutionVars processorExecutionVars) {
        super(configuration, processorTemplateHandler, context, modelController, flowController, gatheredSkipBody, gatheredSkipCloseTag, processorExecutionVars);
        this.context = context;
        this.offset = 0;
    }



    public boolean process() {<FILL_FUNCTION_BODY>}



}



        /*
         * First, check the stopProcess flag
         */
        final TemplateFlowController flowController = getFlowController();
        if (flowController != null && flowController.stopProcessing) {
            return false;
        }

        if (this.offset == 0) {
            /*
             * Reset the "skipBody" and "skipCloseTag" values at the event model controller, and also set this
             * synthetic model into the processor handler so that it can be used by the executed events
             */
            prepareProcessing();
        }

        /*
         * PROCESS THE MODEL
         */
        final Model model = getInnerModel();
        this.offset += model.process(getProcessorTemplateHandler(), this.offset, flowController);

        /*
         * Compute whether the whole model has been processed or not
         */
        final boolean processed =
                (flowController == null || (this.offset == model.queueSize && !flowController.stopProcessing));

        if (processed) {
            /*
             * DECREASE THE CONTEXT LEVEL
             * This was increased before starting gathering, when the handling of the first gathered event started.
             */
            this.context.decreaseLevel();
        }

        return processed;

    
<methods>public final void gatherCDATASection(org.thymeleaf.model.ICDATASection) ,public final void gatherCloseElement(org.thymeleaf.model.ICloseElementTag) ,public final void gatherComment(org.thymeleaf.model.IComment) ,public final void gatherDocType(org.thymeleaf.model.IDocType) ,public final void gatherOpenElement(org.thymeleaf.model.IOpenElementTag) ,public final void gatherProcessingInstruction(org.thymeleaf.model.IProcessingInstruction) ,public final void gatherStandaloneElement(org.thymeleaf.model.IStandaloneElementTag) ,public final void gatherText(org.thymeleaf.model.IText) ,public final void gatherUnmatchedCloseElement(org.thymeleaf.model.ICloseElementTag) ,public final void gatherXMLDeclaration(org.thymeleaf.model.IXMLDeclaration) ,public final org.thymeleaf.engine.Model getInnerModel() ,public org.thymeleaf.engine.ProcessorExecutionVars initializeProcessorExecutionVars() ,public final boolean isGatheringFinished() ,public final void resetGatheredSkipFlags() ,public final void resetGatheredSkipFlagsAfterNoIterations() <variables>private final non-sealed org.thymeleaf.engine.TemplateModelController.SkipBody buildTimeSkipBody,private final non-sealed boolean buildTimeSkipCloseTag,private final non-sealed org.thymeleaf.context.IEngineContext context,private final non-sealed org.thymeleaf.engine.TemplateFlowController flowController,private boolean gatheringFinished,private final non-sealed org.thymeleaf.engine.TemplateModelController modelController,private int modelLevel,private final non-sealed org.thymeleaf.engine.ProcessorExecutionVars processorExecutionVars,private final non-sealed org.thymeleaf.engine.ProcessorTemplateHandler processorTemplateHandler,private final non-sealed org.thymeleaf.engine.Model syntheticModel