Giter Site home page Giter Site logo

blockchain-benchmarks-tpcc's People

Contributors

aklenik avatar bzp99 avatar damariskangogo avatar kangogodamariske avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blockchain-benchmarks-tpcc's Issues

Invocation of Java chaincode times out

After resolving working around #5, this is the next roadblock. After starting a clean fablo network, and installing the CC, invoking InitEntries behaves as such:

$ http -v -A bearer -a $token http://localhost:8801/invoke/my-channel1/tpcc method=InitEntries args:='[]'
POST /invoke/my-channel1/tpcc HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer 12bd3ca0-1a58-11ee-8f78-f1a42b6481c8-admin
Connection: keep-alive
Content-Length: 37
Content-Type: application/json
Host: localhost:8801
User-Agent: HTTPie/3.2.1

{
    "args": [],
    "method": "InitEntries"
}


HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Cache-Control: no-store
Connection: keep-alive
Content-Length: 121
Content-Type: application/json; charset=utf-8
Date: Tue, 04 Jul 2023 10:47:17 GMT
ETag: W/"79-fcvDXAnvjjKKtv/YS7bVy48Vnww"
Keep-Alive: timeout=5
X-Powered-By: Express

{
    "message": "No valid responses from any peers. Errors:\n    peer=undefined, status=grpc, message=Endorsement has failed"
}

The cause of the error (timeout) is clearer from the peer logs:

2023-07-04 10:47:17.690 UTC 0063 INFO [endorser] callChaincode -> finished chaincode: tpcc duration: 30010ms channel=my-channel1 txID=4f9806d4
2023-07-04 10:47:17.690 UTC 0064 ERRO [endorser] simulateProposal -> failed to invoke chaincode tpcc, error: timeout expired while executing transaction
github.com/hyperledger/fabric/core/chaincode.(*Handler).Execute
        /go/src/github.com/hyperledger/fabric/core/chaincode/handler.go:1188
github.com/hyperledger/fabric/core/chaincode.(*ChaincodeSupport).execute
        /go/src/github.com/hyperledger/fabric/core/chaincode/chaincode_support.go:278
github.com/hyperledger/fabric/core/chaincode.(*ChaincodeSupport).Invoke
        /go/src/github.com/hyperledger/fabric/core/chaincode/chaincode_support.go:208
github.com/hyperledger/fabric/core/chaincode.(*ChaincodeSupport).Execute
        /go/src/github.com/hyperledger/fabric/core/chaincode/chaincode_support.go:161
github.com/hyperledger/fabric/core/endorser.(*SupportImpl).Execute
        /go/src/github.com/hyperledger/fabric/core/endorser/support.go:126
github.com/hyperledger/fabric/core/endorser.(*Endorser).callChaincode
        /go/src/github.com/hyperledger/fabric/core/endorser/endorser.go:120
github.com/hyperledger/fabric/core/endorser.(*Endorser).simulateProposal
        /go/src/github.com/hyperledger/fabric/core/endorser/endorser.go:187
github.com/hyperledger/fabric/core/endorser.(*Endorser).ProcessProposalSuccessfullyOrError
        /go/src/github.com/hyperledger/fabric/core/endorser/endorser.go:409
github.com/hyperledger/fabric/core/endorser.(*Endorser).ProcessProposal
        /go/src/github.com/hyperledger/fabric/core/endorser/endorser.go:350
github.com/hyperledger/fabric/core/handlers/auth/filter.(*expirationCheckFilter).ProcessProposal
        /go/src/github.com/hyperledger/fabric/core/handlers/auth/filter/expiration.go:61
github.com/hyperledger/fabric/core/handlers/auth/filter.(*filter).ProcessProposal
        /go/src/github.com/hyperledger/fabric/core/handlers/auth/filter/filter.go:32
github.com/hyperledger/fabric-protos-go/peer._Endorser_ProcessProposal_Handler.func1
        /go/src/github.com/hyperledger/fabric/vendor/github.com/hyperledger/fabric-protos-go/peer/peer.pb.go:107
github.com/hyperledger/fabric/internal/peer/node.unaryGrpcLimiter.func1
        /go/src/github.com/hyperledger/fabric/internal/peer/node/grpc_limiters.go:56
github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1.1
        /go/src/github.com/hyperledger/fabric/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:25
github.com/hyperledger/fabric/common/grpclogging.UnaryServerInterceptor.func1
        /go/src/github.com/hyperledger/fabric/common/grpclogging/server.go:92
github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1.1
        /go/src/github.com/hyperledger/fabric/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:25
github.com/hyperledger/fabric/common/grpcmetrics.UnaryServerInterceptor.func1
        /go/src/github.com/hyperledger/fabric/common/grpcmetrics/interceptor.go:31
github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1.1
        /go/src/github.com/hyperledger/fabric/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:25
github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1
        /go/src/github.com/hyperledger/fabric/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:34
github.com/hyperledger/fabric-protos-go/peer._Endorser_ProcessProposal_Handler
        /go/src/github.com/hyperledger/fabric/vendor/github.com/hyperledger/fabric-protos-go/peer/peer.pb.go:109
google.golang.org/grpc.(*Server).processUnaryRPC
        /go/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:1180
google.golang.org/grpc.(*Server).handleStream
        /go/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:1503
google.golang.org/grpc.(*Server).serveStreams.func1.2
        /go/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:843
runtime.goexit
        /usr/local/go/src/runtime/asm_amd64.s:1581
error sending
failed to execute transaction 4f9806d4cf425c21302a71087f24ddbbd34e231280ac8526a4c182b32ecf20cc
github.com/hyperledger/fabric/core/chaincode.processChaincodeExecutionResult
        /go/src/github.com/hyperledger/fabric/core/chaincode/chaincode_support.go:167
github.com/hyperledger/fabric/core/chaincode.(*ChaincodeSupport).Execute
        /go/src/github.com/hyperledger/fabric/core/chaincode/chaincode_support.go:162
github.com/hyperledger/fabric/core/endorser.(*SupportImpl).Execute
        /go/src/github.com/hyperledger/fabric/core/endorser/support.go:126
github.com/hyperledger/fabric/core/endorser.(*Endorser).callChaincode
        /go/src/github.com/hyperledger/fabric/core/endorser/endorser.go:120
github.com/hyperledger/fabric/core/endorser.(*Endorser).simulateProposal
        /go/src/github.com/hyperledger/fabric/core/endorser/endorser.go:187
github.com/hyperledger/fabric/core/endorser.(*Endorser).ProcessProposalSuccessfullyOrError
        /go/src/github.com/hyperledger/fabric/core/endorser/endorser.go:409
github.com/hyperledger/fabric/core/endorser.(*Endorser).ProcessProposal
        /go/src/github.com/hyperledger/fabric/core/endorser/endorser.go:350
github.com/hyperledger/fabric/core/handlers/auth/filter.(*expirationCheckFilter).ProcessProposal
        /go/src/github.com/hyperledger/fabric/core/handlers/auth/filter/expiration.go:61
github.com/hyperledger/fabric/core/handlers/auth/filter.(*filter).ProcessProposal
        /go/src/github.com/hyperledger/fabric/core/handlers/auth/filter/filter.go:32
github.com/hyperledger/fabric-protos-go/peer._Endorser_ProcessProposal_Handler.func1
        /go/src/github.com/hyperledger/fabric/vendor/github.com/hyperledger/fabric-protos-go/peer/peer.pb.go:107
github.com/hyperledger/fabric/internal/peer/node.unaryGrpcLimiter.func1
        /go/src/github.com/hyperledger/fabric/internal/peer/node/grpc_limiters.go:56
github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1.1
        /go/src/github.com/hyperledger/fabric/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:25
github.com/hyperledger/fabric/common/grpclogging.UnaryServerInterceptor.func1
        /go/src/github.com/hyperledger/fabric/common/grpclogging/server.go:92
github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1.1
        /go/src/github.com/hyperledger/fabric/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:25
github.com/hyperledger/fabric/common/grpcmetrics.UnaryServerInterceptor.func1
        /go/src/github.com/hyperledger/fabric/common/grpcmetrics/interceptor.go:31
github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1.1
        /go/src/github.com/hyperledger/fabric/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:25
github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1
        /go/src/github.com/hyperledger/fabric/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:34
github.com/hyperledger/fabric-protos-go/peer._Endorser_ProcessProposal_Handler
        /go/src/github.com/hyperledger/fabric/vendor/github.com/hyperledger/fabric-protos-go/peer/peer.pb.go:109
google.golang.org/grpc.(*Server).processUnaryRPC
        /go/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:1180
google.golang.org/grpc.(*Server).handleStream
        /go/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:1503
google.golang.org/grpc.(*Server).serveStreams.func1.2
        /go/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:843
runtime.goexit
        /usr/local/go/src/runtime/asm_amd64.s:1581 channel=my-channel1 txID=4f9806d4
2023-07-04 10:47:17.690 UTC 0065 WARN [endorser] ProcessProposal -> Failed to invoke chaincode channel=my-channel1 chaincode=tpcc error="error in simulation: failed to execute transaction 4f9806d4cf425c21302a71087f24ddbbd34e231280ac8526a4c1
82b32ecf20cc: error sending: timeout expired while executing transaction"
2023-07-04 10:47:17.690 UTC 0066 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=192.168.192.8:56666 grpc.code=OK grpc.call_duration=30.01s

Strangely, there seems to be no output from the chaincode container. This makes me think that this is a connection issue between the Fabric network and the external CC. Digging deeper…

Java chaincode review for enhanced code-base

Legend:
πŸ”΄: High priority.
🟑: Medium priority.
🟒: Low priority.
πŸ”΅: Discussion.

General

Delivery

New Order

Order Status

Payment

LGTM

Stock Level

Other components

TBD

C.TXIO:PAYMENT:EQ_H_AMOUNT violated by TPCC#payment(TPCCContext, PaymentInput)

It seems that the H_AMOUNT value in the output and input are not equal. Full trace below.

Thread[fabric-txinvoke:5,5,main] 07:00:53:393 SEVERE  org.hyperledger.fabric.Logger error                                              Error during contract method executionorg.hyperledger.fabric.contract.ContractRuntimeException: Error during contract method execution
        at org.hyperledger.fabric.contract.execution.impl.ContractExecutionService.executeRequest(ContractExecutionService.java:78)
        at org.hyperledger.fabric.contract.ContractRouter.processRequest(ContractRouter.java:116)
        at org.hyperledger.fabric.contract.ContractRouter.invoke(ContractRouter.java:127)
        at org.hyperledger.fabric.shim.impl.ChaincodeInvocationTask.call(ChaincodeInvocationTask.java:106)
        at org.hyperledger.fabric.shim.impl.InvocationTaskManager.lambda$newTask$17(InvocationTaskManager.java:265)
        at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.jmlspecs.runtime.JmlAssertionError: /home/gradle/src/main/java/hu/bme/mit/ftsrg/chaincode/tpcc/TPCC.java:629: verify: JML postcondition is false
  private PaymentOutput payment(final TPCCContext ctx, final PaymentInput input)
                        ^
specs/hu/bme/mit/ftsrg/chaincode/tpcc/TPCC.jml:46: verify: Associated declaration: /home/gradle/src/main/java/hu/bme/mit/ftsrg/chaincode/tpcc/TPCC.java:629:
    @ ensures \result.getH_amount() == input.getH_amount(); // C.TXIO:PAYMENT:EQ_H_AMOUNT
      ^
        at org.jmlspecs.runtime.Utils.createException(Utils.java:142)
        at org.jmlspecs.runtime.Utils.assertionFailureL(Utils.java:94)
        at hu.bme.mit.ftsrg.chaincode.tpcc.TPCC.payment(TPCC.java:1)
        at hu.bme.mit.ftsrg.chaincode.tpcc.TPCC.payment(TPCC.java:135)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.hyperledger.fabric.contract.execution.impl.ContractExecutionService.executeRequest(ContractExecutionService.java:60)
        ... 8 more
.. caused by ../home/gradle/src/main/java/hu/bme/mit/ftsrg/chaincode/tpcc/TPCC.java:629: verify: JML postcondition is false
  private PaymentOutput payment(final TPCCContext ctx, final PaymentInput input)
                        ^
specs/hu/bme/mit/ftsrg/chaincode/tpcc/TPCC.jml:46: verify: Associated declaration: /home/gradle/src/main/java/hu/bme/mit/ftsrg/chaincode/tpcc/TPCC.java:629:
    @ ensures \result.getH_amount() == input.getH_amount(); // C.TXIO:PAYMENT:EQ_H_AMOUNT
      ^org.jmlspecs.runtime.JmlAssertionError: /home/gradle/src/main/java/hu/bme/mit/ftsrg/chaincode/tpcc/TPCC.java:629: verify: JML postcondition is false
  private PaymentOutput payment(final TPCCContext ctx, final PaymentInput input)
                        ^
specs/hu/bme/mit/ftsrg/chaincode/tpcc/TPCC.jml:46: verify: Associated declaration: /home/gradle/src/main/java/hu/bme/mit/ftsrg/chaincode/tpcc/TPCC.java:629:
    @ ensures \result.getH_amount() == input.getH_amount(); // C.TXIO:PAYMENT:EQ_H_AMOUNT
      ^
        at org.jmlspecs.runtime.Utils.createException(Utils.java:142)
        at org.jmlspecs.runtime.Utils.assertionFailureL(Utils.java:94)
        at hu.bme.mit.ftsrg.chaincode.tpcc.TPCC.payment(TPCC.java:1)
        at hu.bme.mit.ftsrg.chaincode.tpcc.TPCC.payment(TPCC.java:135)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.hyperledger.fabric.contract.execution.impl.ContractExecutionService.executeRequest(ContractExecutionService.java:60)
        at org.hyperledger.fabric.contract.ContractRouter.processRequest(ContractRouter.java:116)
        at org.hyperledger.fabric.contract.ContractRouter.invoke(ContractRouter.java:127)
        at org.hyperledger.fabric.shim.impl.ChaincodeInvocationTask.call(ChaincodeInvocationTask.java:106)
        at org.hyperledger.fabric.shim.impl.InvocationTaskManager.lambda$newTask$17(InvocationTaskManager.java:265)
        at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)

TPC-C Java implementation review

Reorganize the package structure of the Java implementation

Something like the following structure is desirable:

src/main/java/hu/bme/mit/ftsrg/
β”œβ”€ entries/
β”‚  β”œβ”€ Customer.java
β”‚  β”œβ”€ ...
β”œβ”€ inputs/
β”‚  β”œβ”€ DeliveryInput.java
β”‚  β”œβ”€ ...
β”œβ”€ outputs/
β”‚  β”œβ”€ DeliveryOutput.java
β”‚  β”œβ”€ ...
β”œβ”€ utils/
β”‚  β”œβ”€ Common.java
β”œβ”€ TPCC.java

Meaning:

  • The root package should be hu.bme.mit.ftsrg to reflect the correct organizational structure as per Java package naming conventions.
  • The classes should be separated according to their purpose (entries, inputs, outputs, utils), and their packages updated accordingly.
  • Cammel Pascal casing should be used for all source files (common.java -> Common.java or Utils.java).
  • *Input.java and *Output.java should be used to denote the parameters and return values, respectively, of the transaction profile functions.

Chaincode execution fails when compiled with OpenJML

Our problem:

Exception in thread "main" java.lang.VerifyError: Bad local variable type
Exception Details:
  Location:
    org/example/TPCC.doStockLevel(Lorg/hyperledger/fabric/contract/Context;Ljava/lang/String;)Lorg/example/DoStockLevelOutput; @2008: iload
  Reason:
    Type 'java/lang/String' (current frame, locals[8]) is not assignable to integer
  Current Frame:
    bci: @2008
    flags: { }
    locals: { 'org/example/TPCC', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'java/lang/Exception', integer, 'org/example/DoStockLevelOutput', integer, 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', integer, 'java/lang/String', 'java/util/logging/Logger', integer, 'java/lang/String', 'org/example/StockLevelParameters', integer, 'org/example/StockLevelParameters', integer, 'org/hyperledger/fabric/contract/Context', integer, integer, 'org/example/District', integer, 'org/example/District', integer, integer, integer, integer, integer, integer, 'org/hyperledger/fabric/contract/Context', integer, integer, integer, integer, 'java/util/List', integer, 'java/util/List', integer, integer, 'java/util/Iterator', 'java/lang/Integer', 'java/lang/Integer', integer, 'org/hyperledger/fabric/contract/Context', integer }

The full error log, for reference:

Thread[main,5,main] 11:39:56:320 INFO    java.util.logging.LogManager$RootLogger log                                      Updated all handlers the format
Thread[main,5,main] 11:39:56:320 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              <<<<<<<<<<<<<Environment options>>>>>>>>>>>>
Thread[main,5,main] 11:39:56:320 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              CORE_CHAINCODE_ID_NAME: tpcc:a03d5726c28a155d993f6789701908d88746d0e5f0c9078860a7b4ae18411886
Thread[main,5,main] 11:39:56:320 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              CORE_PEER_ADDRESS: 127.0.0.1
Thread[main,5,main] 11:39:56:320 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              CORE_PEER_TLS_ENABLED: false
Thread[main,5,main] 11:39:56:320 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              CORE_PEER_TLS_ROOTCERT_FILE: null
Thread[main,5,main] 11:39:56:320 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              CORE_TLS_CLIENT_KEY_PATH: null
Thread[main,5,main] 11:39:56:320 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              CORE_TLS_CLIENT_CERT_PATH: null
Thread[main,5,main] 11:39:56:330 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              CORE_TLS_CLIENT_KEY_FILE: null
Thread[main,5,main] 11:39:56:330 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              CORE_TLS_CLIENT_CERT_FILE: null
Thread[main,5,main] 11:39:56:330 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              CORE_PEER_LOCALMSPID: 
Thread[main,5,main] 11:39:56:330 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              CHAINCODE_SERVER_ADDRESS: 0.0.0.0:9999
Thread[main,5,main] 11:39:56:340 INFO    org.hyperledger.fabric.shim.ChaincodeBase processEnvironmentOptions              LOGLEVEL: null
Thread[main,5,main] 11:39:56:360 INFO    org.hyperledger.fabric.shim.ChaincodeBase processCommandLineOptions              <<<<<<<<<<<<<CommandLine options>>>>>>>>>>>>
Thread[main,5,main] 11:39:56:360 INFO    org.hyperledger.fabric.shim.ChaincodeBase processCommandLineOptions              CORE_CHAINCODE_ID_NAME: tpcc:a03d5726c28a155d993f6789701908d88746d0e5f0c9078860a7b4ae18411886
Thread[main,5,main] 11:39:56:360 INFO    org.hyperledger.fabric.shim.ChaincodeBase processCommandLineOptions              CORE_PEER_ADDRESS: 127.0.0.1:7051
Thread[main,5,main] 11:39:56:360 INFO    org.hyperledger.fabric.shim.ChaincodeBase getChaincodeConfig                     <<<<<<<<<<<<<Properties options>>>>>>>>>>>>
Thread[main,5,main] 11:39:56:450 INFO    org.hyperledger.fabric.shim.ChaincodeBase getChaincodeConfig                     {CORE_CHAINCODE_ID_NAME=tpcc:a03d5726c28a155d993f6789701908d88746d0e5f0c9078860a7b4ae18411886, CORE_PEER_ADDRESS=127.0.0.1}
Thread[main,5,main] 11:39:56:470 INFO    org.hyperledger.fabric.metrics.Metrics initialize                                Metrics disabled
Thread[main,5,main] 11:39:56:470 INFO    org.hyperledger.fabric.traces.Traces initialize                                  Traces disabled
Exception in thread "main" java.lang.VerifyError: Bad local variable type
Exception Details:
  Location:
    org/example/TPCC.doStockLevel(Lorg/hyperledger/fabric/contract/Context;Ljava/lang/String;)Lorg/example/DoStockLevelOutput; @2008: iload
  Reason:
    Type 'java/lang/String' (current frame, locals[8]) is not assignable to integer
  Current Frame:
    bci: @2008
    flags: { }
    locals: { 'org/example/TPCC', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'java/lang/Exception', integer, 'org/example/DoStockLevelOutput', integer, 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', 'org/hyperledger/fabric/contract/Context', 'java/lang/String', integer, 'java/lang/String', 'java/util/logging/Logger', integer, 'java/lang/String', 'org/example/StockLevelParameters', integer, 'org/example/StockLevelParameters', integer, 'org/hyperledger/fabric/contract/Context', integer, integer, 'org/example/District', integer, 'org/example/District', integer, integer, integer, integer, integer, integer, 'org/hyperledger/fabric/contract/Context', integer, integer, integer, integer, 'java/util/List', integer, 'java/util/List', integer, integer, 'java/util/Iterator', 'java/lang/Integer', 'java/lang/Integer', integer, 'org/hyperledger/fabric/contract/Context', integer }
    stack: { }
  Bytecode:
    0x0000000: 014e 0336 0401 3a05 0336 0603 b800 203a
    0x0000010: 072b c600 0704 a700 0403 3608 1508 b800
    0x0000020: 203a 0703 b800 203a 0819 07b6 0021 9900
    0x0000030: 152c c600 0704 a700 0403 3609 1509 b800
    0x0000040: 203a 0819 08b6 0021 3606 a700 0c3a 0712
    0x0000050: 2219 07b8 0004 013a 072b 3a07 a700 1d3a
    0x0000060: 08a7 0018 3a08 1908 01b8 0006 a700 0d3a
    0x0000070: 0819 0813 01a7 b800 0901 3a08 2c3a 08a7
    0x0000080: 001d 3a09 a700 183a 0919 0901 b800 06a7
    0x0000090: 000d 3a09 1909 1301 a7b8 0009 013a 092b
    0x00000a0: 3a09 a700 1d3a 0aa7 0018 3a0a 190a 01b8
    0x00000b0: 0006 a700 0d3a 0a19 0a13 01a7 b800 0901
    0x00000c0: 3a0a 2c3a 0aa7 001d 3a0b a700 183a 0b19
    0x00000d0: 0b01 b800 06a7 000d 3a0b 190b 1301 a7b8
    0x00000e0: 0009 013a 0b2b 3a0b a700 1d3a 0ca7 0018
    0x00000f0: 3a0c 190c 01b8 0006 a700 0d3a 0c19 0c13
    0x0000100: 01a7 b800 0901 3a0c 2c3a 0ca7 001d 3a0d
    0x0000110: a700 183a 0d19 0d01 b800 06a7 000d 3a0d
    0x0000120: 190d 1301 a7b8 0009 013a 0d2b 3a0d a700
    0x0000130: 1d3a 0ea7 0018 3a0e 190e 01b8 0006 a700
    0x0000140: 0d3a 0e19 0e13 01a7 b800 0901 3a0e 2c3a
    0x0000150: 0ea7 001d 3a0f a700 183a 0f19 0f01 b800
    0x0000160: 06a7 000d 3a0f 190f 1301 a7b8 0009 013a
    0x0000170: 0f2b 3a0f a700 1d3a 10a7 0018 3a10 1910
    0x0000180: 01b8 0006 a700 0d3a 1019 1013 01a7 b800
    0x0000190: 0901 3a10 2c3a 10a7 001d 3a11 a700 183a
    0x00001a0: 1119 1101 b800 06a7 000d 3a11 1911 1301
    0x00001b0: a7b8 0009 013a 112b 3a11 a700 1d3a 12a7
    0x00001c0: 0018 3a12 1912 01b8 0006 a700 0d3a 1219
    0x00001d0: 1213 01a7 b800 0901 3a12 2c3a 12a7 001d
    0x00001e0: 3a13 a700 183a 1319 1301 b800 06a7 000d
    0x00001f0: 3a13 1913 1301 a7b8 0009 013a 132b 3a13
    0x0000200: a700 1d3a 14a7 0018 3a14 1914 01b8 0006
    0x0000210: a700 0d3a 1419 1413 01a7 b800 0901 3a14
    0x0000220: 2c3a 14a7 001d 3a15 a700 183a 1519 1501
    0x0000230: b800 06a7 000d 3a15 1915 1301 a7b8 0009
    0x0000240: 013a 152b 3a15 a700 1d3a 16a7 0018 3a16
    0x0000250: 1916 01b8 0006 a700 0d3a 1619 1613 01a7
    0x0000260: b800 0901 3a16 2c3a 16a7 001d 3a17 a700
    0x0000270: 183a 1719 1701 b800 06a7 000d 3a17 1917
    0x0000280: 1301 a7b8 0009 0336 17bb 0024 59b7 0025
    0x0000290: 1303 44b6 0027 2cb6 0027 b600 283a 18b2
    0x00002a0: 0014 3a19 0436 17a7 0023 3a1a 1203 191a
    0x00002b0: b800 04a7 0017 3a1a 191a 01b8 0006 a700
    0x00002c0: 0c3a 1a19 1a12 08b8 0009 1517 361a 151a
    0x00002d0: 361b 151b 9a00 0b13 0345 120b b800 0ca7
    0x00002e0: 0024 3a1a 1203 191a b800 04a7 0018 3a1a
    0x00002f0: 191a 01b8 0006 a700 0d3a 1a19 1a13 0346
    0x0000300: b800 0915 1799 0008 1517 9900 0319 1919
    0x0000310: 18b6 002b a700 103a 1a19 1a4e 1189 7836
    0x0000320: 0419 1abf 0336 1a2c 3a1b 013a 1c03 b800
    0x0000330: 203a 1d19 1bc6 0007 04a7 0004 0336 1e15
    0x0000340: 1eb8 0020 3a1d 191d b600 2136 1aa7 0024
    0x0000350: 3a1e 1203 191e b800 04a7 0018 3a1e 191e
    0x0000360: 01b8 0006 a700 0d3a 1e19 1e13 0347 b800
    0x0000370: 0915 1a36 1e15 1e36 1f15 1f9a 0011 1303
    0x0000380: 4813 0349 b800 1c12 0bb8 000c a700 243a
    0x0000390: 1e12 0319 1eb8 0004 a700 183a 1e19 1e01
    0x00003a0: b800 06a7 000d 3a1e 191e 1303 4ab8 0009
    0x00003b0: 151a 9900 0815 1a99 0003 191b b803 4b3a
    0x00003c0: 1c2d c700 03a7 0024 3a1e 1230 191e b800
    0x00003d0: 04a7 0018 3a1e 191e 01b8 0006 a700 0d3a
    0x00003e0: 1e19 1e13 034a b800 0915 1a99 0033 191c
    0x00003f0: c600 0704 a700 0403 361e a700 243a 1e12
    0x0000400: 3119 1eb8 0004 a700 183a 1e19 1e01 b800
    0x0000410: 06a7 000d 3a1e 191e 1303 47b8 0009 a700
    0x0000420: 243a 1e12 3219 1eb8 0004 a700 183a 1e19
    0x0000430: 1e01 b800 06a7 000d 3a1e 191e 1303 47b8
    0x0000440: 0009 a700 103a 1e19 1e4e 1188 e436 0419
    0x0000450: 1ebf 191c c600 0704 a700 0403 361d 151d
    0x0000460: 9a00 0b13 034c 1212 b800 0c19 1c3a 1e03
    0x0000470: 361f 2b3a 2019 1eb4 034d 3621 191e b403
    0x0000480: 4e36 2201 3a23 03b8 0020 3a24 1920 c600
    0x0000490: 0704 a700 0403 3625 1525 b800 203a 2419
    0x00004a0: 24b6 0021 361f a700 233a 2512 0319 25b8
    0x00004b0: 0004 a700 173a 2519 2501 b800 06a7 000c
    0x00004c0: 3a25 1925 12f3 b800 0915 1f36 2515 2536
    0x00004d0: 2615 269a 0011 1303 4f13 0350 b800 1c12
    0x00004e0: 0bb8 000c a700 243a 2512 0319 25b8 0004
    0x00004f0: a700 183a 2519 2501 b800 06a7 000d 3a25
    0x0000500: 1925 1303 51b8 0009 151f 9900 0815 1f99
    0x0000510: 0003 1920 1521 1522 b800 f63a 232d c700
    0x0000520: 03a7 0024 3a25 1230 1925 b800 04a7 0018
    0x0000530: 3a25 1925 01b8 0006 a700 0d3a 2519 2513
    0x0000540: 0351 b800 0915 1f99 0032 1923 c600 0704
    0x0000550: a700 0403 3625 a700 233a 2512 3119 25b8
    0x0000560: 0004 a700 173a 2519 2501 b800 06a7 000c
    0x0000570: 3a25 1925 12f3 b800 09a7 0023 3a25 1232
    0x0000580: 1925 b800 04a7 0017 3a25 1925 01b8 0006
    0x0000590: a700 0c3a 2519 2512 f3b8 0009 a700 103a
    0x00005a0: 2519 254e 1188 1d36 0419 25bf 1923 c600
    0x00005b0: 0704 a700 0403 3624 1524 9a00 0b13 0352
    0x00005c0: 1212 b800 0c19 233a 2503 1925 b400 fca2
    0x00005d0: 0015 1014 9c00 1019 25b4 00fc 1251 1014
    0x00005e0: 60a3 0007 04a7 0004 0336 2615 269a 000b
    0x00005f0: 1303 5312 53b8 000c 1925 b400 fc9c 0016
    0x0000600: 0310 14a2 0010 1254 1014 6019 25b4 00fc
    0x0000610: a300 0704 a700 0403 3627 1527 9a00 0b13
    0x0000620: 0353 1253 b800 0c19 25b4 00fc 1014 6436
    0x0000630: 2815 2836 2919 25b4 00fc 362a 0336 2b2b
    0x0000640: 3a2c 191e b403 4d36 2d19 25b4 0108 362e
    0x0000650: 1529 362f 152a 3630 013a 3103 b800 203a
    0x0000660: 3219 2cc6 0007 04a7 0004 0336 3315 33b8
    0x0000670: 0020 3a32 1932 b600 2136 2ba7 0024 3a33
    0x0000680: 1203 1933 b800 04a7 0018 3a33 1933 01b8
    0x0000690: 0006 a700 0d3a 3319 3313 0354 b800 0915
    0x00006a0: 2b36 3315 3336 3415 349a 0011 1303 5513
    0x00006b0: 0356 b800 1c12 0bb8 000c a700 243a 3312
    0x00006c0: 0319 33b8 0004 a700 183a 3319 3301 b800
    0x00006d0: 06a7 000d 3a33 1933 1303 57b8 0009 152b
    0x00006e0: 9900 0815 2b99 0003 192c 152d 152e 152f
    0x00006f0: 1530 b803 583a 312d c700 03a7 0024 3a33
    0x0000700: 1230 1933 b800 04a7 0018 3a33 1933 01b8
    0x0000710: 0006 a700 0d3a 3319 3313 0357 b800 0915
    0x0000720: 2b99 0033 1931 c600 0704 a700 0403 3633
    0x0000730: a700 243a 3312 3119 33b8 0004 a700 183a
    0x0000740: 3319 3301 b800 06a7 000d 3a33 1933 1303
    0x0000750: 59b8 0009 a700 243a 3312 3219 33b8 0004
    0x0000760: a700 183a 3319 3301 b800 06a7 000d 3a33
    0x0000770: 1933 1303 59b8 0009 a700 103a 3319 334e
    0x0000780: 1186 1036 0419 33bf 1931 c600 0704 a700
    0x0000790: 0403 3632 1532 9a00 0b13 035a 1212 b800
    0x00007a0: 0c19 313a 3303 3634 0336 3519 33b8 035b
    0x00007b0: 3a36 1936 b803 5c9a 0006 a701 e519 36b8
    0x00007c0: 035d c003 5e3a 3719 373a 3803 3639 2b3a
    0x00007d0: 3a19 1eb4 034d 363b 1508 363c 013a 3d03
    0x00007e0: b800 203a 3e19 3ac6 0007 04a7 0004 0336
    0x00007f0: 3f15 3fb8 0020 3a3e 193e b600 2136 39a7
    0x0000800: 0024 3a3f 1203 193f b800 04a7 0018 3a3f
    0x0000810: 193f 01b8 0006 a700 0d3a 3f19 3f13 0192
    0x0000820: b800 0915 3936 3f15 3f36 4015 409a 0011
    0x0000830: 1303 5f13 0360 b800 1c12 0bb8 000c a700
    0x0000840: 243a 3f12 0319 3fb8 0004 a700 183a 3f19
    0x0000850: 3f01 b800 06a7 000d 3a3f 193f 1303 61b8
    0x0000860: 0009 1539 9900 0815 3999 0003 193a 153b
    0x0000870: 153c b801 963a 3d2d c700 03a7 0024 3a3f
    0x0000880: 1230 193f b800 04a7 0018 3a3f 193f 01b8
    0x0000890: 0006 a700 0d3a 3f19 3f13 0361 b800 0915
    0x00008a0: 3999 0033 193d c600 0704 a700 0403 363f
    0x00008b0: a700 243a 3f12 3119 3fb8 0004 a700 183a
    0x00008c0: 3f19 3f01 b800 06a7 000d 3a3f 193f 1301
    0x00008d0: 92b8 0009 a700 243a 3f12 3219 3fb8 0004
    0x00008e0: a700 183a 3f19 3f01 b800 06a7 000d 3a3f
    0x00008f0: 193f 1301 92b8 0009 a700 103a 3f19 3f4e
    0x0000900: 1184 2a36 0419 3fbf 193d c600 0704 a700
    0x0000910: 0403 363e 153e 9a00 0b13 0362 1212 b800
    0x0000920: 0c19 3d3a 3f19 3fb4 019d 191e b403 63a2
    0x0000930: 0007 04a7 0004 0336 4015 4099 005b 0315
    0x0000940: 34a2 0011 0304 a200 0c15 3412 5104 64a3
    0x0000950: 0007 04a7 0004 0336 4115 419a 000b 1303
    0x0000960: 6412 53b8 000c 1534 9c00 1004 9c00 0c12
    0x0000970: 5404 6415 34a3 0007 04a7 0004 0336 4215
    0x0000980: 429a 000b 1303 6412 53b8 000c 1534 0460
    0x0000990: 3643 1543 3634 1535 0460 3635 a7fe 1603
    0x00009a0: 3635 013a 3604 3635 a700 233a 3712 0319
    0x00009b0: 37b8 0004 a700 173a 3719 3701 b800 06a7
    0x00009c0: 000c 3a37 1937 1208 b800 0915 3536 3715
    0x00009d0: 3736 3815 389a 0011 1303 6513 0366 b800
    0x00009e0: 1c12 0bb8 000c a700 243a 3712 0319 37b8
    0x00009f0: 0004 a700 183a 3719 3701 b800 06a7 000d
    0x0000a00: 3a37 1937 1303 67b8 0009 1535 9900 0815
    0x0000a10: 3599 0003 bb03 6859 b703 693a 36a7 0010
    0x0000a20: 3a37 1937 4e11 8254 3604 1937 bf19 36c6
    0x0000a30: 0007 04a7 0004 0336 3715 379a 000b 1303
    0x0000a40: 6a12 12b8 000c 1936 3a38 1938 191e b403
    0x0000a50: 4db5 036b 1938 b403 6b36 3919 3819 1eb4
    0x0000a60: 034e b503 6c19 38b4 036c 363a 1938 191e
    0x0000a70: b403 63b5 036d 1938 b403 6d36 3b19 3815
    0x0000a80: 34b5 036e 1938 b403 6e36 3c19 383a 0511
    0x0000a90: 7ec3 3604 014e 1905 3a3d 2dc7 008d b200
    0x0000aa0: 14c6 0007 04a7 0004 0336 3e15 3e36 3f15
    0x0000ab0: 3f9a 000a 1215 1216 b800 0c2a b400 13c6
    0x0000ac0: 0007 04a7 0004 0336 4015 4036 4115 419a
    0x0000ad0: 000a 1217 1216 b800 0c15 0699 0026 1905
    0x0000ae0: c600 0704 a700 0403 3642 1542 3643 1543
    0x0000af0: 9a00 1113 036f 1303 70b8 001c 12ce b800
    0x0000b00: 0ca7 0085 3a3e 1218 193e b800 04a7 0079
    0x0000b10: 3a3e 193e 01b8 0006 a700 6e3a 3e19 3e13
    0x0000b20: 01a7 b800 09a7 0061 2dc1 0010 9900 0f15
    0x0000b30: 0699 000a 2dc1 0002 9900 0704 a700 0403
    0x0000b40: 363e 153e 9a00 1e13 0371 2db8 001b b800
    0x0000b50: 1c13 0372 b800 1c13 0370 b800 1c12 1fb8
    0x0000b60: 000c a700 243a 3e12 d119 3eb8 0004 a700
    0x0000b70: 183a 3e19 3e01 b800 06a7 000d 3a3e 193e
    0x0000b80: 1301 a7b8 0009 193d b03a 1a03 3604 014e
    0x0000b90: 0336 1b03 361c 0336 1d19 1a3a 1e01 3a1f
    0x0000ba0: 0436 1ca7 0023 3a20 1203 1920 b800 04a7
    0x0000bb0: 0017 3a20 1920 01b8 0006 a700 0c3a 2019
    0x0000bc0: 2012 08b8 0009 0436 1da7 0023 3a20 1203
    0x0000bd0: 1920 b800 04a7 0017 3a20 1920 01b8 0006
    0x0000be0: a700 0c3a 2019 2012 08b8 0009 151c 9a00
    0x0000bf0: 0815 1d99 0007 04a7 0004 0336 2015 2036
    0x0000c00: 2115 219a 0011 1303 7413 0375 b800 1c12
    0x0000c10: 0bb8 000c a700 243a 2012 0319 20b8 0004
    0x0000c20: a700 183a 2019 2001 b800 06a7 000d 3a20
    0x0000c30: 1920 1303 76b8 0009 191e b600 d63a 1f2d
    0x0000c40: c700 03a7 0024 3a20 1230 1920 b800 04a7
    0x0000c50: 0018 3a20 1920 01b8 0006 a700 0d3a 2019
    0x0000c60: 2013 0376 b800 0915 1c99 0032 191f c600
    0x0000c70: 0704 a700 0403 3620 a700 233a 2012 3119
    0x0000c80: 20b8 0004 a700 173a 2019 2001 b800 06a7
    0x0000c90: 000c 3a20 1920 12d7 b800 09a7 0023 3a20
    0x0000ca0: 1232 1920 b800 04a7 0017 3a20 1920 01b8
    0x0000cb0: 0006 a700 0c3a 2019 2012 d7b8 0009 151d
    0x0000cc0: 9900 3219 1fc6 0007 04a7 0004 0336 20a7
    0x0000cd0: 0023 3a20 1231 1920 b800 04a7 0017 3a20
    0x0000ce0: 1920 01b8 0006 a700 0c3a 2019 2012 d8b8
    0x0000cf0: 0009 a700 233a 2012 3219 20b8 0004 a700
    0x0000d00: 173a 2019 2001 b800 06a7 000c 3a20 1920
    0x0000d10: 12d8 b800 09a7 0010 3a20 1920 4e11 80f2
    0x0000d20: 3604 1920 bf2b 3a20 03b8 0020 3a21 03b8
    0x0000d30: 0020 3a22 03b8 0020 3a23 191f c600 0704
    0x0000d40: a700 0403 3624 1524 b800 203a 2119 21b6
    0x0000d50: 0021 9900 1619 20c6 0007 04a7 0004 0336
    0x0000d60: 2415 24b8 0020 3a22 1922 b600 2199 0017
    0x0000d70: 1302 70c6 0007 04a7 0004 0336 2415 24b8
    0x0000d80: 0020 3a23 1923 b600 2136 1ba7 0024 3a24
    0x0000d90: 1203 1924 b800 04a7 0018 3a24 1924 01b8
    0x0000da0: 0006 a700 0d3a 2419 2413 0271 b800 0915
    0x0000db0: 1b36 2415 2436 2515 259a 0011 1303 7713
    0x0000dc0: 0378 b800 1c12 0bb8 000c a700 243a 2412
    0x0000dd0: 0319 24b8 0004 a700 183a 2419 2401 b800
    0x0000de0: 06a7 000d 3a24 1924 1303 76b8 0009 151b
    0x0000df0: 9900 0815 1b99 0003 191f 1920 1302 70b8
    0x0000e00: 0274 a700 103a 2419 244e 1180 ff36 0419
    0x0000e10: 24bf 01c0 0368 3a05 117f 3f36 0401 4e19
    0x0000e20: 053a 1a2d c700 8db2 0014 c600 0704 a700
    0x0000e30: 0403 361b 151b 361c 151c 9a00 0a12 1512
    0x0000e40: 16b8 000c 2ab4 0013 c600 0704 a700 0403
    0x0000e50: 361d 151d 361e 151e 9a00 0a12 1712 16b8
    0x0000e60: 000c 1506 9900 2619 05c6 0007 04a7 0004
    0x0000e70: 0336 1f15 1f36 2015 209a 0011 1303 6f13
    0x0000e80: 0370 b800 1c12 ceb8 000c a700 853a 1b12
    0x0000e90: 1819 1bb8 0004 a700 793a 1b19 1b01 b800
    0x0000ea0: 06a7 006e 3a1b 191b 1301 a7b8 0009 a700
    0x0000eb0: 612d c100 1099 000f 1506 9900 0a2d c100
    0x0000ec0: 0299 0007 04a7 0004 0336 1b15 1b9a 001e
    0x0000ed0: 1303 712d b800 1bb8 001c 1303 72b8 001c
    0x0000ee0: 1303 70b8 001c 121f b800 0ca7 0024 3a1b
    0x0000ef0: 12d1 191b b800 04a7 0018 3a1b 191b 01b8
    0x0000f00: 0006 a700 0d3a 1b19 1b13 01a7 b800 0919
    0x0000f10: 1ab0 3a17 1917 4e19 17bf 3a44 2dc7 008d
    0x0000f20: b200 14c6 0007 04a7 0004 0336 4515 4536
    0x0000f30: 4615 469a 000a 1215 1216 b800 0c2a b400
    0x0000f40: 13c6 0007 04a7 0004 0336 4715 4736 4815
    0x0000f50: 489a 000a 1217 1216 b800 0c15 0699 0026
    0x0000f60: 1905 c600 0704 a700 0403 3649 1549 364a
    0x0000f70: 154a 9a00 1113 036f 1303 70b8 001c 12ce
    0x0000f80: b800 0ca7 0085 3a45 1218 1945 b800 04a7
    0x0000f90: 0079 3a45 1945 01b8 0006 a700 6e3a 4519
    0x0000fa0: 4513 01a7 b800 09a7 0061 2dc1 0010 9900
    0x0000fb0: 0f15 0699 000a 2dc1 0002 9900 0704 a700
    0x0000fc0: 0403 3645 1545 9a00 1e13 0371 2db8 001b
    0x0000fd0: b800 1c13 0372 b800 1c13 0370 b800 1c12
    0x0000fe0: 1fb8 000c a700 243a 4512 d119 45b8 0004
    0x0000ff0: a700 183a 4519 4501 b800 06a7 000d 3a45
    0x0001000: 1945 1301 a7b8 0009 1944 bf            
  Exception Handler Table:
    bci [11, 74] => handler: 77
    bci [89, 92] => handler: 95
    bci [89, 92] => handler: 100
    bci [89, 92] => handler: 111
    bci [124, 127] => handler: 130
    bci [124, 127] => handler: 135
    bci [124, 127] => handler: 146
    bci [159, 162] => handler: 165
    bci [159, 162] => handler: 170
    bci [159, 162] => handler: 181
    bci [194, 197] => handler: 200
    bci [194, 197] => handler: 205
    bci [194, 197] => handler: 216
    bci [229, 232] => handler: 235
    bci [229, 232] => handler: 240
    bci [229, 232] => handler: 251
    bci [264, 267] => handler: 270
    bci [264, 267] => handler: 275
    bci [264, 267] => handler: 286
    bci [299, 302] => handler: 305
    bci [299, 302] => handler: 310
    bci [299, 302] => handler: 321
    bci [334, 337] => handler: 340
    bci [334, 337] => handler: 345
    bci [334, 337] => handler: 356
    bci [369, 372] => handler: 375
    bci [369, 372] => handler: 380
    bci [369, 372] => handler: 391
    bci [404, 407] => handler: 410
    bci [404, 407] => handler: 415
    bci [404, 407] => handler: 426
    bci [439, 442] => handler: 445
    bci [439, 442] => handler: 450
    bci [439, 442] => handler: 461
    bci [474, 477] => handler: 480
    bci [474, 477] => handler: 485
    bci [474, 477] => handler: 496
    bci [509, 512] => handler: 515
    bci [509, 512] => handler: 520
    bci [509, 512] => handler: 531
    bci [544, 547] => handler: 550
    bci [544, 547] => handler: 555
    bci [544, 547] => handler: 566
    bci [579, 582] => handler: 585
    bci [579, 582] => handler: 590
    bci [579, 582] => handler: 601
    bci [614, 617] => handler: 620
    bci [614, 617] => handler: 625
    bci [614, 617] => handler: 636
    bci [676, 679] => handler: 682
    bci [676, 679] => handler: 694
    bci [676, 679] => handler: 705
    bci [714, 735] => handler: 738
    bci [714, 735] => handler: 750
    bci [714, 735] => handler: 761
    bci [781, 788] => handler: 791
    bci [819, 845] => handler: 848
    bci [819, 845] => handler: 860
    bci [819, 845] => handler: 871
    bci [881, 908] => handler: 911
    bci [881, 908] => handler: 923
    bci [881, 908] => handler: 934
    bci [961, 965] => handler: 968
    bci [961, 965] => handler: 980
    bci [961, 965] => handler: 991
    bci [1006, 1018] => handler: 1021
    bci [1006, 1018] => handler: 1033
    bci [1006, 1018] => handler: 1044
    bci [1001, 1054] => handler: 1057
    bci [1001, 1054] => handler: 1069
    bci [1001, 1054] => handler: 1080
    bci [954, 1090] => handler: 1093
    bci [1164, 1190] => handler: 1193
    bci [1164, 1190] => handler: 1205
    bci [1164, 1190] => handler: 1216
    bci [1225, 1252] => handler: 1255
    bci [1225, 1252] => handler: 1267
    bci [1225, 1252] => handler: 1278
    bci [1309, 1313] => handler: 1316
    bci [1309, 1313] => handler: 1328
    bci [1309, 1313] => handler: 1339
    bci [1354, 1366] => handler: 1369
    bci [1354, 1366] => handler: 1381
    bci [1354, 1366] => handler: 1392
    bci [1349, 1401] => handler: 1404
    bci [1349, 1401] => handler: 1416
    bci [1349, 1401] => handler: 1427
    bci [1298, 1436] => handler: 1439
    bci [1633, 1659] => handler: 1662
    bci [1633, 1659] => handler: 1674
    bci [1633, 1659] => handler: 1685
    bci [1695, 1722] => handler: 1725
    bci [1695, 1722] => handler: 1737
    bci [1695, 1722] => handler: 1748
    bci [1783, 1787] => handler: 1790
    bci [1783, 1787] => handler: 1802
    bci [1783, 1787] => handler: 1813
    bci [1828, 1840] => handler: 1843
    bci [1828, 1840] => handler: 1855
    bci [1828, 1840] => handler: 1866
    bci [1823, 1876] => handler: 1879
    bci [1823, 1876] => handler: 1891
    bci [1823, 1876] => handler: 1902
    bci [1768, 1912] => handler: 1915
    bci [2021, 2047] => handler: 2050
    bci [2021, 2047] => handler: 2062
    bci [2021, 2047] => handler: 2073
    bci [2083, 2110] => handler: 2113
    bci [2083, 2110] => handler: 2125
    bci [2083, 2110] => handler: 2136
    bci [2167, 2171] => handler: 2174
    bci [2167, 2171] => handler: 2186
    bci [2167, 2171] => handler: 2197
    bci [2212, 2224] => handler: 2227
    bci [2212, 2224] => handler: 2239
    bci [2212, 2224] => handler: 2250
    bci [2207, 2260] => handler: 2263
    bci [2207, 2260] => handler: 2275
    bci [2207, 2260] => handler: 2286
    bci [2156, 2296] => handler: 2299
    bci [2469, 2472] => handler: 2475
    bci [2469, 2472] => handler: 2487
    bci [2469, 2472] => handler: 2498
    bci [2507, 2534] => handler: 2537
    bci [2507, 2534] => handler: 2549
    bci [2507, 2534] => handler: 2560
    bci [2580, 2589] => handler: 2592
    bci [2718, 2817] => handler: 2820
    bci [2718, 2817] => handler: 2832
    bci [2718, 2817] => handler: 2843
    bci [2856, 2914] => handler: 2917
    bci [2856, 2914] => handler: 2929
    bci [2856, 2914] => handler: 2940
    bci [804, 2714] => handler: 2953
    bci [2976, 2979] => handler: 2982
    bci [2976, 2979] => handler: 2994
    bci [2976, 2979] => handler: 3005
    bci [3014, 3017] => handler: 3020
    bci [3014, 3017] => handler: 3032
    bci [3014, 3017] => handler: 3043
    bci [3052, 3092] => handler: 3095
    bci [3052, 3092] => handler: 3107
    bci [3052, 3092] => handler: 3118
    bci [3135, 3139] => handler: 3142
    bci [3135, 3139] => handler: 3154
    bci [3135, 3139] => handler: 3165
    bci [3180, 3192] => handler: 3195
    bci [3180, 3192] => handler: 3207
    bci [3180, 3192] => handler: 3218
    bci [3175, 3227] => handler: 3230
    bci [3175, 3227] => handler: 3242
    bci [3175, 3227] => handler: 3253
    bci [3267, 3279] => handler: 3282
    bci [3267, 3279] => handler: 3294
    bci [3267, 3279] => handler: 3305
    bci [3262, 3314] => handler: 3317
    bci [3262, 3314] => handler: 3329
    bci [3262, 3314] => handler: 3340
    bci [3128, 3349] => handler: 3352
    bci [3386, 3467] => handler: 3470
    bci [3386, 3467] => handler: 3482
    bci [3386, 3467] => handler: 3493
    bci [3503, 3530] => handler: 3533
    bci [3503, 3530] => handler: 3545
    bci [3503, 3530] => handler: 3556
    bci [3576, 3586] => handler: 3589
    bci [3623, 3722] => handler: 3725
    bci [3623, 3722] => handler: 3737
    bci [3623, 3722] => handler: 3748
    bci [3761, 3819] => handler: 3822
    bci [3761, 3819] => handler: 3834
    bci [3761, 3819] => handler: 3845
    bci [646, 2714] => handler: 3858
    bci [2953, 3619] => handler: 3858
    bci [646, 2714] => handler: 3866
    bci [2953, 3619] => handler: 3866
    bci [3872, 3971] => handler: 3974
    bci [3872, 3971] => handler: 3986
    bci [3872, 3971] => handler: 3997
    bci [4010, 4068] => handler: 4071
    bci [4010, 4068] => handler: 4083
    bci [4010, 4068] => handler: 4094
    bci [3858, 3868] => handler: 3866
  Stackmap Table:
    full_frame(@25,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1612]},{})
    same_locals_1_stack_item_frame(@26,Integer)
    append_frame(@57,Object[#1612])
    same_locals_1_stack_item_frame(@58,Integer)
    same_frame(@67)
    full_frame(@77,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer},{Object[#1239]})
    same_frame(@86)
    full_frame(@95,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609]},{Object[#210]})
    same_locals_1_stack_item_frame(@100,Object[#1240])
    same_locals_1_stack_item_frame(@111,Object[#1241])
    same_frame(@121)
    full_frame(@130,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610]},{Object[#210]})
    same_locals_1_stack_item_frame(@135,Object[#1240])
    same_locals_1_stack_item_frame(@146,Object[#1241])
    same_frame(@156)
    full_frame(@165,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609]},{Object[#210]})
    same_locals_1_stack_item_frame(@170,Object[#1240])
    same_locals_1_stack_item_frame(@181,Object[#1241])
    same_frame(@191)
    full_frame(@200,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610]},{Object[#210]})
    same_locals_1_stack_item_frame(@205,Object[#1240])
    same_locals_1_stack_item_frame(@216,Object[#1241])
    same_frame(@226)
    full_frame(@235,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609]},{Object[#210]})
    same_locals_1_stack_item_frame(@240,Object[#1240])
    same_locals_1_stack_item_frame(@251,Object[#1241])
    same_frame(@261)
    full_frame(@270,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610]},{Object[#210]})
    same_locals_1_stack_item_frame(@275,Object[#1240])
    same_locals_1_stack_item_frame(@286,Object[#1241])
    same_frame(@296)
    full_frame(@305,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609]},{Object[#210]})
    same_locals_1_stack_item_frame(@310,Object[#1240])
    same_locals_1_stack_item_frame(@321,Object[#1241])
    same_frame(@331)
    full_frame(@340,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610]},{Object[#210]})
    same_locals_1_stack_item_frame(@345,Object[#1240])
    same_locals_1_stack_item_frame(@356,Object[#1241])
    same_frame(@366)
    full_frame(@375,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609]},{Object[#210]})
    same_locals_1_stack_item_frame(@380,Object[#1240])
    same_locals_1_stack_item_frame(@391,Object[#1241])
    same_frame(@401)
    full_frame(@410,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610]},{Object[#210]})
    same_locals_1_stack_item_frame(@415,Object[#1240])
    same_locals_1_stack_item_frame(@426,Object[#1241])
    same_frame(@436)
    full_frame(@445,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609]},{Object[#210]})
    same_locals_1_stack_item_frame(@450,Object[#1240])
    same_locals_1_stack_item_frame(@461,Object[#1241])
    same_frame(@471)
    full_frame(@480,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610]},{Object[#210]})
    same_locals_1_stack_item_frame(@485,Object[#1240])
    same_locals_1_stack_item_frame(@496,Object[#1241])
    same_frame(@506)
    full_frame(@515,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609]},{Object[#210]})
    same_locals_1_stack_item_frame(@520,Object[#1240])
    same_locals_1_stack_item_frame(@531,Object[#1241])
    same_frame(@541)
    full_frame(@550,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610]},{Object[#210]})
    same_locals_1_stack_item_frame(@555,Object[#1240])
    same_locals_1_stack_item_frame(@566,Object[#1241])
    same_frame(@576)
    full_frame(@585,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609]},{Object[#210]})
    same_locals_1_stack_item_frame(@590,Object[#1240])
    same_locals_1_stack_item_frame(@601,Object[#1241])
    same_frame(@611)
    full_frame(@620,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610]},{Object[#210]})
    same_locals_1_stack_item_frame(@625,Object[#1240])
    same_locals_1_stack_item_frame(@636,Object[#1241])
    same_frame(@646)
    full_frame(@682,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613]},{Object[#1239]})
    same_locals_1_stack_item_frame(@694,Object[#1240])
    same_locals_1_stack_item_frame(@705,Object[#1241])
    same_frame(@714)
    same_frame(@735)
    same_locals_1_stack_item_frame(@738,Object[#1239])
    same_locals_1_stack_item_frame(@750,Object[#1240])
    same_locals_1_stack_item_frame(@761,Object[#1241])
    same_frame(@771)
    same_frame(@781)
    same_locals_1_stack_item_frame(@791,Object[#210])
    same_frame(@804)
    full_frame(@828,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Integer,Object[#1610],Object[#3006],Object[#1612]},{})
    same_locals_1_stack_item_frame(@829,Integer)
    same_locals_1_stack_item_frame(@848,Object[#1239])
    same_locals_1_stack_item_frame(@860,Object[#1240])
    same_locals_1_stack_item_frame(@871,Object[#1241])
    same_frame(@881)
    same_frame(@908)
    same_locals_1_stack_item_frame(@911,Object[#1239])
    same_locals_1_stack_item_frame(@923,Object[#1240])
    same_locals_1_stack_item_frame(@934,Object[#1241])
    same_frame(@944)
    same_frame(@954)
    same_frame(@965)
    same_locals_1_stack_item_frame(@968,Object[#1239])
    same_locals_1_stack_item_frame(@980,Object[#1240])
    same_locals_1_stack_item_frame(@991,Object[#1241])
    same_frame(@1001)
    same_frame(@1015)
    same_locals_1_stack_item_frame(@1016,Integer)
    same_locals_1_stack_item_frame(@1021,Object[#1239])
    same_locals_1_stack_item_frame(@1033,Object[#1240])
    same_locals_1_stack_item_frame(@1044,Object[#1241])
    same_frame(@1054)
    same_locals_1_stack_item_frame(@1057,Object[#1239])
    same_locals_1_stack_item_frame(@1069,Object[#1240])
    same_locals_1_stack_item_frame(@1080,Object[#1241])
    same_frame(@1090)
    same_locals_1_stack_item_frame(@1093,Object[#210])
    chop_frame(@1106,1)
    same_frame(@1115)
    same_locals_1_stack_item_frame(@1116,Integer)
    append_frame(@1131,Integer)
    full_frame(@1173,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Integer,Object[#1610],Object[#3006],Integer,Object[#3007],Integer,Object[#1609],Integer,Integer,Object[#2373],Object[#1612]},{})
    same_locals_1_stack_item_frame(@1174,Integer)
    same_locals_1_stack_item_frame(@1193,Object[#1239])
    same_locals_1_stack_item_frame(@1205,Object[#1240])
    same_locals_1_stack_item_frame(@1216,Object[#1241])
    same_frame(@1225)
    same_frame(@1252)
    same_locals_1_stack_item_frame(@1255,Object[#1239])
    same_locals_1_stack_item_frame(@1267,Object[#1240])
    same_locals_1_stack_item_frame(@1278,Object[#1241])
    same_frame(@1288)
    same_frame(@1298)
    same_frame(@1313)
    same_locals_1_stack_item_frame(@1316,Object[#1239])
    same_locals_1_stack_item_frame(@1328,Object[#1240])
    same_locals_1_stack_item_frame(@1339,Object[#1241])
    same_frame(@1349)
    same_frame(@1363)
    same_locals_1_stack_item_frame(@1364,Integer)
    same_locals_1_stack_item_frame(@1369,Object[#1239])
    same_locals_1_stack_item_frame(@1381,Object[#1240])
    same_locals_1_stack_item_frame(@1392,Object[#1241])
    same_frame(@1401)
    same_locals_1_stack_item_frame(@1404,Object[#1239])
    same_locals_1_stack_item_frame(@1416,Object[#1240])
    same_locals_1_stack_item_frame(@1427,Object[#1241])
    same_frame(@1436)
    same_locals_1_stack_item_frame(@1439,Object[#210])
    chop_frame(@1452,1)
    same_frame(@1461)
    same_locals_1_stack_item_frame(@1462,Integer)
    append_frame(@1477,Integer)
    append_frame(@1508,Object[#3008])
    same_frame(@1512)
    same_locals_1_stack_item_frame(@1513,Integer)
    append_frame(@1528,Integer)
    same_frame(@1555)
    same_frame(@1559)
    same_locals_1_stack_item_frame(@1560,Integer)
    append_frame(@1575,Integer)
    full_frame(@1642,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Integer,Object[#1610],Object[#3006],Integer,Object[#3007],Integer,Object[#1609],Integer,Integer,Object[#2373],Integer,Object[#3008],Integer,Integer,Integer,Integer,Integer,Integer,Object[#1609],Integer,Integer,Integer,Integer,Object[#1617],Object[#1612]},{})
    same_locals_1_stack_item_frame(@1643,Integer)
    same_locals_1_stack_item_frame(@1662,Object[#1239])
    same_locals_1_stack_item_frame(@1674,Object[#1240])
    same_locals_1_stack_item_frame(@1685,Object[#1241])
    same_frame(@1695)
    same_frame(@1722)
    same_locals_1_stack_item_frame(@1725,Object[#1239])
    same_locals_1_stack_item_frame(@1737,Object[#1240])
    same_locals_1_stack_item_frame(@1748,Object[#1241])
    same_frame(@1758)
    same_frame(@1768)
    same_frame(@1787)
    same_locals_1_stack_item_frame(@1790,Object[#1239])
    same_locals_1_stack_item_frame(@1802,Object[#1240])
    same_locals_1_stack_item_frame(@1813,Object[#1241])
    same_frame(@1823)
    same_frame(@1837)
    same_locals_1_stack_item_frame(@1838,Integer)
    same_locals_1_stack_item_frame(@1843,Object[#1239])
    same_locals_1_stack_item_frame(@1855,Object[#1240])
    same_locals_1_stack_item_frame(@1866,Object[#1241])
    same_frame(@1876)
    same_locals_1_stack_item_frame(@1879,Object[#1239])
    same_locals_1_stack_item_frame(@1891,Object[#1240])
    same_locals_1_stack_item_frame(@1902,Object[#1241])
    same_frame(@1912)
    same_locals_1_stack_item_frame(@1915,Object[#210])
    chop_frame(@1928,1)
    same_frame(@1937)
    same_locals_1_stack_item_frame(@1938,Integer)
    append_frame(@1953,Integer)
    full_frame(@1970,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Integer,Object[#1610],Object[#3006],Integer,Object[#3007],Integer,Object[#1609],Integer,Integer,Object[#2373],Integer,Object[#3008],Integer,Integer,Integer,Integer,Integer,Integer,Object[#1609],Integer,Integer,Integer,Integer,Object[#1617],Integer,Object[#3009],Integer,Integer,Object[#3010]},{})
    same_frame(@1981)
    full_frame(@2030,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Integer,Object[#1610],Object[#3006],Integer,Object[#3007],Integer,Object[#1609],Integer,Integer,Object[#2373],Integer,Object[#3008],Integer,Integer,Integer,Integer,Integer,Integer,Object[#1609],Integer,Integer,Integer,Integer,Object[#1617],Integer,Object[#3009],Integer,Integer,Object[#3010],Object[#3011],Object[#3011],Integer,Object[#1609],Integer,Integer,Object[#2388],Object[#1612]},{})
    same_locals_1_stack_item_frame(@2031,Integer)
    same_locals_1_stack_item_frame(@2050,Object[#1239])
    same_locals_1_stack_item_frame(@2062,Object[#1240])
    same_locals_1_stack_item_frame(@2073,Object[#1241])
    same_frame(@2083)
    same_frame(@2110)
    same_locals_1_stack_item_frame(@2113,Object[#1239])
    same_locals_1_stack_item_frame(@2125,Object[#1240])
    same_locals_1_stack_item_frame(@2136,Object[#1241])
    same_frame(@2146)
    same_frame(@2156)
    same_frame(@2171)
    same_locals_1_stack_item_frame(@2174,Object[#1239])
    same_locals_1_stack_item_frame(@2186,Object[#1240])
    same_locals_1_stack_item_frame(@2197,Object[#1241])
    same_frame(@2207)
    same_frame(@2221)
    same_locals_1_stack_item_frame(@2222,Integer)
    same_locals_1_stack_item_frame(@2227,Object[#1239])
    same_locals_1_stack_item_frame(@2239,Object[#1240])
    same_locals_1_stack_item_frame(@2250,Object[#1241])
    same_frame(@2260)
    same_locals_1_stack_item_frame(@2263,Object[#1239])
    same_locals_1_stack_item_frame(@2275,Object[#1240])
    same_locals_1_stack_item_frame(@2286,Object[#1241])
    same_frame(@2296)
    same_locals_1_stack_item_frame(@2299,Object[#210])
    chop_frame(@2312,1)
    same_frame(@2321)
    same_locals_1_stack_item_frame(@2322,Integer)
    append_frame(@2337,Integer)
    append_frame(@2358,Object[#3012])
    same_locals_1_stack_item_frame(@2359,Integer)
    append_frame(@2386,Integer)
    same_frame(@2390)
    same_locals_1_stack_item_frame(@2391,Integer)
    append_frame(@2406,Integer)
    same_frame(@2424)
    same_frame(@2428)
    same_locals_1_stack_item_frame(@2429,Integer)
    append_frame(@2444,Integer)
    full_frame(@2454,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Integer,Object[#1610],Object[#3006],Integer,Object[#3007],Integer,Object[#1609],Integer,Integer,Object[#2373],Integer,Object[#3008],Integer,Integer,Integer,Integer,Integer,Integer,Object[#1609],Integer,Integer,Integer,Integer,Object[#1617],Integer,Object[#3009],Integer,Integer,Object[#3010],Object[#3011],Object[#3011]},{})
    full_frame(@2463,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Integer,Object[#1610],Object[#3006],Integer,Object[#3007],Integer,Object[#1609],Integer,Integer,Object[#2373],Integer,Object[#3008],Integer,Integer,Integer,Integer,Integer,Integer,Object[#1609],Integer,Integer,Integer,Integer,Object[#1617],Integer,Object[#3009],Integer},{})
    full_frame(@2475,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Integer,Object[#1610],Object[#3006],Integer,Object[#3007],Integer,Object[#1609],Integer,Integer,Object[#2373],Integer,Object[#3008],Integer,Integer,Integer,Integer,Integer,Integer,Object[#1609],Integer,Integer,Integer,Integer,Object[#1617],Integer,Object[#3009],Integer,Integer,Object[#3005]},{Object[#1239]})
    same_locals_1_stack_item_frame(@2487,Object[#1240])
    same_locals_1_stack_item_frame(@2498,Object[#1241])
    same_frame(@2507)
    same_frame(@2534)
    same_locals_1_stack_item_frame(@2537,Object[#1239])
    same_locals_1_stack_item_frame(@2549,Object[#1240])
    same_locals_1_stack_item_frame(@2560,Object[#1241])
    same_frame(@2570)
    same_frame(@2580)
    same_locals_1_stack_item_frame(@2592,Object[#210])
    same_frame(@2605)
    same_frame(@2614)
    same_locals_1_stack_item_frame(@2615,Integer)
    append_frame(@2630,Integer)
    full_frame(@2728,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Integer,Object[#1610],Object[#3006],Integer,Object[#3007],Integer,Object[#1609],Integer,Integer,Object[#2373],Integer,Object[#3008],Integer,Integer,Integer,Integer,Integer,Integer,Object[#1609],Integer,Integer,Integer,Integer,Object[#1617],Integer,Object[#3009],Integer,Integer,Object[#3005],Integer,Object[#3013],Integer,Integer,Integer,Integer,Object[#3005]},{})
    same_locals_1_stack_item_frame(@2729,Integer)
    append_frame(@2747,Integer,Integer)
    same_frame(@2758)
    same_locals_1_stack_item_frame(@2759,Integer)
    append_frame(@2777,Integer,Integer)
    same_frame(@2791)
    same_locals_1_stack_item_frame(@2792,Integer)
    full_frame(@2817,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Integer,Object[#1610],Object[#3006],Integer,Object[#3007],Integer,Object[#1609],Integer,Integer,Object[#2373],Integer,Object[#3008],Integer,Integer,Integer,Integer,Integer,Integer,Object[#1609],Integer,Integer,Integer,Integer,Object[#1617],Integer,Object[#3009],Integer,Integer,Object[#3005],Integer,Object[#3013],Integer,Integer,Integer,Integer,Object[#3005]},{})
    same_locals_1_stack_item_frame(@2820,Object[#1239])
    same_locals_1_stack_item_frame(@2832,Object[#1240])
    same_locals_1_stack_item_frame(@2843,Object[#1241])
    same_frame(@2856)
    same_frame(@2875)
    same_frame(@2879)
    same_locals_1_stack_item_frame(@2880,Integer)
    same_frame(@2914)
    same_locals_1_stack_item_frame(@2917,Object[#1239])
    same_locals_1_stack_item_frame(@2929,Object[#1240])
    same_locals_1_stack_item_frame(@2940,Object[#1241])
    same_frame(@2950)
    full_frame(@2953,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613]},{Object[#883]})
    full_frame(@2982,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Object[#883],Integer,Integer,Integer,Object[#883],Object[#1610]},{Object[#1239]})
    same_locals_1_stack_item_frame(@2994,Object[#1240])
    same_locals_1_stack_item_frame(@3005,Object[#1241])
    same_frame(@3014)
    same_locals_1_stack_item_frame(@3020,Object[#1239])
    same_locals_1_stack_item_frame(@3032,Object[#1240])
    same_locals_1_stack_item_frame(@3043,Object[#1241])
    same_frame(@3052)
    same_frame(@3062)
    same_frame(@3066)
    same_locals_1_stack_item_frame(@3067,Integer)
    same_frame(@3092)
    same_locals_1_stack_item_frame(@3095,Object[#1239])
    same_locals_1_stack_item_frame(@3107,Object[#1240])
    same_locals_1_stack_item_frame(@3118,Object[#1241])
    same_frame(@3128)
    same_frame(@3139)
    same_locals_1_stack_item_frame(@3142,Object[#1239])
    same_locals_1_stack_item_frame(@3154,Object[#1240])
    same_locals_1_stack_item_frame(@3165,Object[#1241])
    same_frame(@3175)
    same_frame(@3189)
    same_locals_1_stack_item_frame(@3190,Integer)
    same_locals_1_stack_item_frame(@3195,Object[#1239])
    same_locals_1_stack_item_frame(@3207,Object[#1240])
    same_locals_1_stack_item_frame(@3218,Object[#1241])
    same_frame(@3227)
    same_locals_1_stack_item_frame(@3230,Object[#1239])
    same_locals_1_stack_item_frame(@3242,Object[#1240])
    same_locals_1_stack_item_frame(@3253,Object[#1241])
    same_frame(@3262)
    same_frame(@3276)
    same_locals_1_stack_item_frame(@3277,Integer)
    same_locals_1_stack_item_frame(@3282,Object[#1239])
    same_locals_1_stack_item_frame(@3294,Object[#1240])
    same_locals_1_stack_item_frame(@3305,Object[#1241])
    same_frame(@3314)
    same_locals_1_stack_item_frame(@3317,Object[#1239])
    same_locals_1_stack_item_frame(@3329,Object[#1240])
    same_locals_1_stack_item_frame(@3340,Object[#1241])
    same_frame(@3349)
    same_locals_1_stack_item_frame(@3352,Object[#210])
    same_frame(@3365)
    full_frame(@3395,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Object[#883],Integer,Integer,Integer,Object[#883],Object[#1610],Object[#1609],Object[#1612],Object[#1612],Object[#1612]},{})
    same_locals_1_stack_item_frame(@3396,Integer)
    same_frame(@3422)
    same_locals_1_stack_item_frame(@3423,Integer)
    same_frame(@3432)
    same_frame(@3450)
    same_locals_1_stack_item_frame(@3451,Integer)
    same_frame(@3460)
    same_locals_1_stack_item_frame(@3470,Object[#1239])
    same_locals_1_stack_item_frame(@3482,Object[#1240])
    same_locals_1_stack_item_frame(@3493,Object[#1241])
    same_frame(@3503)
    same_frame(@3530)
    same_locals_1_stack_item_frame(@3533,Object[#1239])
    same_locals_1_stack_item_frame(@3545,Object[#1240])
    same_locals_1_stack_item_frame(@3556,Object[#1241])
    same_frame(@3566)
    same_frame(@3576)
    same_locals_1_stack_item_frame(@3589,Object[#210])
    full_frame(@3602,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613]},{})
    append_frame(@3633,Object[#3005])
    same_locals_1_stack_item_frame(@3634,Integer)
    append_frame(@3652,Integer,Integer)
    same_frame(@3663)
    same_locals_1_stack_item_frame(@3664,Integer)
    append_frame(@3682,Integer,Integer)
    same_frame(@3696)
    same_locals_1_stack_item_frame(@3697,Integer)
    full_frame(@3722,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Integer,Object[#1610],Object[#1613],Object[#3005]},{})
    same_locals_1_stack_item_frame(@3725,Object[#1239])
    same_locals_1_stack_item_frame(@3737,Object[#1240])
    same_locals_1_stack_item_frame(@3748,Object[#1241])
    same_frame(@3761)
    same_frame(@3780)
    same_frame(@3784)
    same_locals_1_stack_item_frame(@3785,Integer)
    same_frame(@3819)
    same_locals_1_stack_item_frame(@3822,Object[#1239])
    same_locals_1_stack_item_frame(@3834,Object[#1240])
    same_locals_1_stack_item_frame(@3845,Object[#1241])
    same_frame(@3855)
    full_frame(@3858,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610]},{Object[#210]})
    same_locals_1_stack_item_frame(@3866,Object[#1630])
    full_frame(@3882,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Object[#1630]},{})
    same_locals_1_stack_item_frame(@3883,Integer)
    append_frame(@3901,Integer,Integer)
    same_frame(@3912)
    same_locals_1_stack_item_frame(@3913,Integer)
    append_frame(@3931,Integer,Integer)
    same_frame(@3945)
    same_locals_1_stack_item_frame(@3946,Integer)
    full_frame(@3971,{Object[#1237],Object[#1609],Object[#1610],Object[#210],Integer,Object[#3005],Integer,Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Object[#1609],Object[#1610],Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Top,Object[#1630]},{})
    same_locals_1_stack_item_frame(@3974,Object[#1239])
    same_locals_1_stack_item_frame(@3986,Object[#1240])
    same_locals_1_stack_item_frame(@3997,Object[#1241])
    same_frame(@4010)
    same_frame(@4029)
    same_frame(@4033)
    same_locals_1_stack_item_frame(@4034,Integer)
    same_frame(@4068)
    same_locals_1_stack_item_frame(@4071,Object[#1239])
    same_locals_1_stack_item_frame(@4083,Object[#1240])
    same_locals_1_stack_item_frame(@4094,Object[#1241])
    same_frame(@4104)

	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
	at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
	at java.lang.Class.getMethod0(Class.java:3018)
	at java.lang.Class.getMethod(Class.java:1784)
	at org.hyperledger.fabric.contract.routing.impl.ContractDefinitionImpl.<init>(ContractDefinitionImpl.java:61)
	at org.hyperledger.fabric.contract.routing.impl.RoutingRegistryImpl.addNewContract(RoutingRegistryImpl.java:58)
	at org.hyperledger.fabric.contract.routing.impl.RoutingRegistryImpl.addContracts(RoutingRegistryImpl.java:212)
	at org.hyperledger.fabric.contract.routing.impl.RoutingRegistryImpl.findAndSetContracts(RoutingRegistryImpl.java:197)
	at org.hyperledger.fabric.contract.ContractRouter.findAllContracts(ContractRouter.java:88)
	at org.hyperledger.fabric.contract.ContractRouter.main(ContractRouter.java:160)

Add build instructions to Java implementation

The Java project must contain environment requirements and build information in its readme.

Currently, a clean clone results in the following:

  • A Could not create task ':downloadOpenJML' compilation error.
  • A "/libs": not found error during the Docker build.

I'm guessing a correct Java and Gradle version solves the issue, but the readme should include that.

Java CC: Field nullability (β†’ OpenJML)

By default, fields (actually, all reference types) cannot be null in OpenJML 1.

This may make sense in many situations, however, as far as I understand, we more often require unset (null) fields in our entity types than not. Therefore I have gone ahead and changed the default using the --nullable-by-default compile-time flag here.

@aklenik, @KangogoDamarisKE , do you agree with this?

Integrate Hypernate as an external library

Now that Hypernate exists as an independent library at ftsrg/hypernate, we should remove Hypernate-specific code from the TPC-C implementation and add Hypernate as an external dependency.

We can use jitpack, but the Hypernate repo has to become public first.

  • Integrate Hypernate
  • Use a Gradle repository instead of JAR

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.