docs: public synchronized PaymentChannelServerState getOrCreateState(Wallet wallet, TransactionBroadcaster broadcaster) throws VerificationException {
          if (state == null) {
              switch (majorVersion) {
                  case 1:
                      state = new PaymentChannelV1ServerState(this, wallet, broadcaster);
                      break;
                  case 2:
                      state = new PaymentChannelV2ServerState(this, wallet, broadcaster);
                      break;
                  default:
                      throw new IllegalStateException("Invalid version number found");
              }
          }
          checkArgument(wallet == state.wallet);
          return state;
      }