class StatementList extends StatementBase {

    private final StatementBase firstStatement;
    private final String remaining;

    public StatementList(ServerSession session, StatementBase firstStatement, String remaining) {
        super(session);
        this.firstStatement = firstStatement;
        this.remaining = remaining;
    }

    public StatementBase getFirstStatement() {
        return firstStatement;
    }

    public String getRemaining() {
        return remaining;
    }

    @Override
    public int getType() {
        return firstStatement.getType();
    }

    @Override
    public Future<Result> getMetaData() {
        return firstStatement.getMetaData();
    }

    @Override
    public ArrayList<Parameter> getParameters() {
        return firstStatement.getParameters();
    }

    private void executeRemaining() {<FILL_FUNCTION_BODY>}

    @Override
    public PreparedSQLStatement prepare() {
        firstStatement.prepare();
        return this;
    }

    @Override
    public boolean isQuery() {
        return firstStatement.isQuery();
    }

    @Override
    public Result query(int maxRows) {
        Result result = firstStatement.query(maxRows);
        executeRemaining();
        return result;
    }

    @Override
    public int update() {
        int updateCount = firstStatement.update();
        executeRemaining();
        return updateCount;
    }
}

        StatementBase remainingStatement = (StatementBase) session.prepareStatement(remaining, -1);
        if (remainingStatement.isQuery()) {
            remainingStatement.query(0);
        } else {
            remainingStatement.update();
        }
    
<methods>public void <init>(com.lealone.db.session.ServerSession) ,public boolean canReuse() ,public void cancel() ,public void checkCanceled() ,public void checkParameters() ,public void close() ,public YieldableBase<com.lealone.db.result.Result> createYieldableQuery(int, boolean, AsyncHandler<AsyncResult<com.lealone.db.result.Result>>) ,public YieldableBase<java.lang.Integer> createYieldableUpdate(AsyncHandler<AsyncResult<java.lang.Integer>>) ,public Future<com.lealone.db.result.Result> executeQuery(int, boolean) ,public Future<java.lang.Integer> executeUpdate() ,public int getCurrentRowNumber() ,public int getFetchSize() ,public int getId() ,public Future<com.lealone.db.result.Result> getMetaData() ,public long getModificationMetaId() ,public ArrayList<com.lealone.sql.expression.Parameter> getParameters() ,public java.lang.String getPlanSQL() ,public int getPriority() ,public java.lang.String getSQL() ,public com.lealone.db.session.ServerSession getSession() ,public abstract int getType() ,public boolean isQuery() ,public boolean needRecompile() ,public com.lealone.sql.PreparedSQLStatement prepare() ,public Future<java.lang.Boolean> prepare(boolean) ,public com.lealone.db.result.Result query(int) ,public void reuse() ,public boolean setCurrentRowNumber(int) ,public boolean setCurrentRowNumber(int, boolean) ,public void setFetchSize(int) ,public void setId(int) ,public void setModificationMetaId(long) ,public void setObjectId(int) ,public void setParameterList(ArrayList<com.lealone.sql.expression.Parameter>) ,public void setPrepareAlways(boolean) ,public void setPriority(int) ,public com.lealone.common.exceptions.DbException setRow(com.lealone.common.exceptions.DbException, int, java.lang.String) ,public void setSQL(java.lang.String) ,public void setSession(com.lealone.db.session.ServerSession) ,public java.lang.String toString() ,public void trace(long, int) ,public int update() <variables>private boolean canReuse,private int currentRowNumber,private int fetchSize,private long modificationMetaId,private int objectId,protected ArrayList<com.lealone.sql.expression.Parameter> parameters,protected boolean prepareAlways,protected int priority,private int rowScanCount,protected com.lealone.db.session.ServerSession session,protected java.lang.String sql,private int statementId