final void bipush ( CompletableFuture < ? > b , BiCompletion < ? , ? , ? > c ) { if ( c != null ) { while ( result == null ) { if ( tryPushStack ( c ) ) { if ( b . result == null ) b . unipush ( new CoCompletion ( c ) ) ; else if ( result != null ) c . tryFire ( SYNC ) ; return ; } } b . unipush ( c ) ; } }
Pushes completion to this and b unless both done . Caller should first check that either result or b . result is null .