Program: 85780
Project: 85780
Buggy source:
/** 
 * Creates a state object for a payment channel client. It is expected that you be ready to  {@link PaymentChannelClientState#initiate()} after construction (to avoid creating objects for channels which arenot going to finish opening) and thus some parameters provided here are only used in {@link PaymentChannelClientState#initiate()} to create the Multisig contract and refund transaction.
 * @param wallet a wallet that contains at least the specified amount of value.
 * @param myKey a freshly generated private key for this channel.
 * @param serverMultisigKey a public key retrieved from the server used for the initial multisig contract
 * @param value how many satoshis to put into this contract. If the channel reaches this limit, it must be closed.It is suggested you use at least  {@link Utils#CENT} to avoid paying fees if you need to spend the refund transaction
 * @param expiryTimeInSeconds At what point (UNIX timestamp +/- a few hours) the channel will expire
 * @throws VerificationException If either myKey's pubkey or serverMultisigKey's pubkey are non-canonical (ie invalid)
 */
public PaymentChannelClientState(Wallet wallet,ECKey myKey,ECKey serverMultisigKey,BigInteger value,long expiryTimeInSeconds) throws VerificationException {
  checkArgument(value.compareTo(BigInteger.ZERO) > 0);
  this.wallet=checkNotNull(wallet);
  this.serverMultisigKey=checkNotNull(serverMultisigKey);
  if (!myKey.isPubKeyCanonical() || !serverMultisigKey.isPubKeyCanonical())   throw new VerificationException("String_Node_Str");
  this.myKey=checkNotNull(myKey);
  this.valueToMe=this.totalValue=checkNotNull(value);
  this.expiryTime=expiryTimeInSeconds;
  this.state=State.NEW;
}

Fixed version (ground truth):
/** 
 * Creates a state object for a payment channel client. It is expected that you be ready to  {@link PaymentChannelClientState#initiate()} after construction (to avoid creating objects for channels which arenot going to finish opening) and thus some parameters provided here are only used in {@link PaymentChannelClientState#initiate()} to create the Multisig contract and refund transaction.
 * @param wallet a wallet that contains at least the specified amount of value.
 * @param myKey a freshly generated private key for this channel.
 * @param serverMultisigKey a public key retrieved from the server used for the initial multisig contract
 * @param value how many satoshis to put into this contract. If the channel reaches this limit, it must be closed.It is suggested you use at least  {@link Utils#CENT} to avoid paying fees if you need to spend the refund transaction
 * @param expiryTimeInSeconds At what point (UNIX timestamp +/- a few hours) the channel will expire
 * @throws VerificationException If either myKey's pubkey or serverMultisigKey's pubkey are non-canonical (ie invalid)
 */
public PaymentChannelClientState(Wallet wallet,ECKey myKey,ECKey serverMultisigKey,BigInteger value,long expiryTimeInSeconds) throws VerificationException {
  checkArgument(value.compareTo(BigInteger.ZERO) > 0);
  this.wallet=checkNotNull(wallet);
  initWalletListeners();
  this.serverMultisigKey=checkNotNull(serverMultisigKey);
  if (!myKey.isPubKeyCanonical() || !serverMultisigKey.isPubKeyCanonical())   throw new VerificationException("String_Node_Str");
  this.myKey=checkNotNull(myKey);
  this.valueToMe=this.totalValue=checkNotNull(value);
  this.expiryTime=expiryTimeInSeconds;
  this.state=State.NEW;
}