class Update extends UpdatePacketHandler<StatementUpdate> {

        private void handleAsyncResult(PacketHandleTask task, AsyncResult<?> ar, AtomicInteger count,
                AtomicReference<Integer> resultRef, AtomicReference<Throwable> causeRef) {
            if (ar.isFailed() && causeRef.get() == null)
                causeRef.set(ar.getCause());
            if (count.decrementAndGet() == 0) {
                if (causeRef.get() != null) {
                    task.conn.sendError(task.session, task.packetId, causeRef.get());
                } else {
                    task.conn.sendResponse(task, createAckPacket(task, resultRef.get()));
                }
            }
        }

        @Override
        protected void createYieldableUpdate(PacketHandleTask task, PreparedSQLStatement stmt) {<FILL_FUNCTION_BODY>}
    }

            StatementList statementList = (StatementList) stmt;
            String[] statements = statementList.getRemaining().split(";");
            AtomicInteger count = new AtomicInteger();
            AtomicReference<Integer> resultRef = new AtomicReference<>();
            AtomicReference<Throwable> causeRef = new AtomicReference<>();
            for (int i = 0; i < statements.length; i++) {
                statements[i] = statements[i].trim();
                if (!statements[i].isEmpty()) {
                    final String sql = statements[i];
                    LinkableTask subTask = new LinkableTask() {
                        @Override
                        public void run() {
                            PreparedSQLStatement command = task.session.prepareStatement(sql, -1);
                            PreparedSQLStatement.Yieldable<?> yieldable;
                            if (command.isQuery()) {
                                yieldable = command.createYieldableQuery(-1, false, ar -> {
                                    handleAsyncResult(task, ar, count, resultRef, causeRef);
                                });
                            } else {
                                yieldable = command.createYieldableUpdate(ar -> {
                                    handleAsyncResult(task, ar, count, resultRef, causeRef);
                                });
                            }
                            task.si.submitYieldableCommand(task.packetId, yieldable);
                        }
                    };
                    count.incrementAndGet();
                    task.si.submitTasks(subTask);
                }
            }

            PreparedSQLStatement.Yieldable<?> yieldable = statementList.getFirstStatement()
                    .createYieldableUpdate(ar -> {
                        if (ar.isSucceeded()) {
                            int updateCount = ar.getResult();
                            resultRef.set(updateCount);
                        } else {
                            causeRef.set(ar.getCause());
                        }
                    });
            task.si.submitYieldableCommand(task.packetId, yieldable);
        
<no_super_class>