private boolean fillBuffer(){
  while (buffer.count() == 0) {
    if (bufferSink.cancellationRequested() || !pusher.getAsBoolean()) {
      if (finished)       return false;
 else {
        bufferSink.end();
        finished=true;
      }
    }
  }
  return true;
}

private boolean fillBuffer ( ) { while ( buffer . count ( ) == 0 ) { if ( bufferSink . cancellationRequested ( ) || ! pusher . getAsBoolean ( ) ) { if ( finished ) return false ; else { bufferSink . end ( ) ; finished = true ; } } } return true ; }
if the buffer is empty , push elements into the sink chain until the source is empty or cancellation is requested .
