Buggy code:
public class StroemClientTcpConnection { private static final Logger log = LoggerFactory . getLogger ( StroemClientTcpConnection . class ) ; public static final int STROEM_PORT = 4399 ; public static final int CLIENT_STROEM_VERSION = 1 ; public static final String CURRENCY = "BTC" ; public static final long SAFE_MARGIN_SECONDS = 60 * 59 ; private PaymentChannelClient paymentChannelClient ; private StroemMessageReceiver stroemMessageReceiver ; private final ProtobufParser < StroemMessage > wireParser ; private final SettableFuture < StroemClientTcpConnection > channelOpenFuture = SettableFuture . create ( ) ; private SettableFuture < Void > settlementFuture = SettableFuture . create ( ) ; private SettableFuture < Void > currentFuture = SettableFuture . create ( ) ; private boolean freshChannel = false ; private boolean settling = false ; private final Wallet wallet ; private Sha256Hash serverIdHash ; private String serverIdName ; private ECKey myKey ; private Coin maxValue ; private long paymentChannelTimeoutSeconds ; @ Nullable private KeyParameter userKeySetup ; private StroemStep stroemStep = StroemStep . START ; private Sha256Hash makeServerId ( String s ) { } public synchronized void settlePaymentChannel ( ) { } public StroemClientTcpConnection ( String server , int socketTimeoutSeconds , long paymentChannelTimeoutSeconds , Wallet wallet , ECKey myKey , @ Nullable KeyParameter userKeySetup , Coin maxValue , String serverId ) throws ValueOutOfRangeException , IOException { } private SettableFuture < StroemClientTcpConnection > initializePayments ( ) { } private ClientConnection buildPaymentChannelClientConnection ( ) { PaymentChannelClient . ClientConnection clientConnection = new PaymentChannelClient . ClientConnection ( ) { @ Override public void sendToServer ( Protos . TwoWayChannelMessage paymentMsg ) { StroemClientTcpConnection . log . debug ( ( "Sending<seq2seq4repair_space>Payment<seq2seq4repair_space>Channel<seq2seq4repair_space>message<seq2seq4repair_space>of<seq2seq4repair_space>type:<seq2seq4repair_space>" + ( paymentMsg . getType ( ) ) ) ) ; Stroem . PaymentChannelMessage stroemPaymentChannelMsg = PaymentChannelMessage . newBuilder ( ) . setPaymentChannelMessage ( paymentMsg . toByteString ( ) ) . build ( ) ; StroemMessage msg = StroemMessage . newBuilder ( ) . setType ( PAYMENTCHANNEL_MESSAGE ) . setPaymentChannelMessage ( stroemPaymentChannelMsg ) . build ( ) ; wireParser . write ( msg ) ; } @ Override public void destroyConnection ( PaymentChannelCloseException . CloseReason reason ) { if ( channelOpenFuture . isDone ( ) ) { if ( reason == ( CloseReason . CLIENT_REQUESTED_CLOSE ) ) { if ( settling ) { StroemClientTcpConnection . log . info ( "Payment<seq2seq4repair_space>channel<seq2seq4repair_space>settled<seq2seq4repair_space>successfully." ) ; settlementFuture . set ( null ) ; } else { throw new IllegalStateException ( "Client<seq2seq4repair_space>has<seq2seq4repair_space>not<seq2seq4repair_space>requested<seq2seq4repair_space>settle,<seq2seq4repair_space>but<seq2seq4repair_space>server<seq2seq4repair_space>says<seq2seq4repair_space>we<seq2seq4repair_space>have!" ) ; } } else { StroemClientTcpConnection . log . warn ( "Payment<seq2seq4repair_space>channel<seq2seq4repair_space>terminating<seq2seq4repair_space>with<seq2seq4repair_space>reason<seq2seq4repair_space>{}" , reason ) ; if ( reason == ( CloseReason . SERVER_REQUESTED_TOO_MUCH_VALUE ) ) { settlementFuture . setException ( new InsufficientMoneyException ( paymentChannelClient . getMissing ( ) ) ) ; } else { currentFuture . setException ( new PaymentChannelCloseException ( "Unexpected<seq2seq4repair_space>payment<seq2seq4repair_space>channel<seq2seq4repair_space>termination" , reason ) ) ; } } } else { channelOpenFuture . setException ( new PaymentChannelCloseException ( ( "Unable<seq2seq4repair_space>to<seq2seq4repair_space>open<seq2seq4repair_space>payment<seq2seq4repair_space>channel<seq2seq4repair_space>for<seq2seq4repair_space>reason<seq2seq4repair_space>:<seq2seq4repair_space>" + reason ) , reason ) ) ; } wireParser . closeConnection ( ) ; } @ Override public boolean acceptExpireTime ( long expireTime ) { long currentTimeMillis = System . currentTimeMillis ( ) ; long currentTimeSec = currentTimeMillis // 1000 ; long expectedExpirySec = currentTimeSec + ( paymentChannelTimeoutSeconds ) ; long min = expectedExpirySec - ( StroemClientTcpConnection . SAFE_MARGIN_SECONDS ) ; long max = expectedExpirySec + ( StroemClientTcpConnection . SAFE_MARGIN_SECONDS ) ; <START_BUG> StroemClientTcpConnection . log . debug ( ( ( ( ( ( "Expire<seq2seq4repair_space>time<seq2seq4repair_space>=<seq2seq4repair_space>" + expireTime ) + "<seq2seq4repair_space>must<seq2seq4repair_space>be<seq2seq4repair_space>greater<seq2seq4repair_space>than<seq2seq4repair_space>" ) + min ) + "<seq2seq4repair_space>and<seq2seq4repair_space>larger<seq2seq4repair_space>than<seq2seq4repair_space>" ) + max ) ) ; <END_BUG> return ( expireTime > min ) && ( expireTime < max ) ; } @ Override public void channelOpen ( boolean wasInitiated ) { StroemClientTcpConnection . log . info ( "Payment<seq2seq4repair_space>channel<seq2seq4repair_space>{}" , ( wasInitiated ? "was<seq2seq4repair_space>initiated." : "found." ) ) ; freshChannel = wasInitiated ; wireParser . setSocketTimeout ( 0 ) ; channelOpenFuture . set ( StroemClientTcpConnection . this ) ; } } ; return clientConnection ; } private ProtobufParser . Listener < StroemMessage > buildStroemMessageListener ( ) { } public ListenableFuture < StroemClientTcpConnection > getChannelOpenFuture ( ) { } public synchronized StroemPromissoryNote incrementPayment ( Coin size , byte [ ] toTheOrderOf , List < StroemEntity > requiredNegotiations , ECPoint myPublicKey , ECPoint merchantsPublicKey ) throws InvalidProtocolBufferException , ValueOutOfRangeException , IllegalStateException , InterruptedException , ExecutionException { } private void verifyStroemState ( ) { } private PromissoryNoteRequest buildPromissoryNoteRequestProto ( Coin size , byte [ ] toTheOrderOf , List < StroemEntity > requiredNegotiations ) { } private StroemPromissoryNote buildPromissoryNoteFromProto ( ByteString byteString , ECPoint myPublicKey , ECPoint merchantPublicKey ) throws InvalidProtocolBufferException { } public PaymentChannelClientState state ( ) { } public void settle ( ) { } public void disconnectWithoutSettlement ( ) { } }

Fix:
StroemClientTcpConnection . log . debug ( ( ( ( ( ( "Expire<seq2seq4repair_space>time<seq2seq4repair_space>=<seq2seq4repair_space>" + expireTime ) + "<seq2seq4repair_space>must<seq2seq4repair_space>be<seq2seq4repair_space>greater<seq2seq4repair_space>than<seq2seq4repair_space>" ) + min ) + "<seq2seq4repair_space>and<seq2seq4repair_space>less<seq2seq4repair_space>than<seq2seq4repair_space>" ) + max ) ) ;