public boolean refill() throws IOException {
  if (!inflater.needsInput())   return false;
  releaseInflatedBytes();
  if (inflater.getRemaining() != 0)   throw new IllegalStateException("?");
  if (source.exhausted())   return true;
  Segment head=source.buffer().head;
  bufferBytesHeldByInflater=head.limit - head.pos;
  inflater.setInput(head.data,head.pos,bufferBytesHeldByInflater);
  return false;
}

public boolean refill ( ) throws IOException { if ( ! inflater . needsInput ( ) ) return false ; releaseInflatedBytes ( ) ; if ( inflater . getRemaining ( ) != 0 ) throw new IllegalStateException ( "?" ) ; if ( source . exhausted ( ) ) return true ; Segment head = source . buffer ( ) . head ; bufferBytesHeldByInflater = head . limit - head . pos ; inflater . setInput ( head . data , head . pos , bufferBytesHeldByInflater ) ; return false ; }
refills the inflater with compressed data if it needs input . ( and only if it needs input ) . returns true if the inflater required input but the source was exhausted .
