while (! isFinished && inflater.needsInput()) { int len = data.read(buffer, 0, buffer.length);
while (! isFinished && inflater.needsInput()) { len = data.read(buffer, 0, buffer.length);
  public Value gzinflate(Env env,			 InputStream data,                         @Optional("0") long length)  {    try {      Inflater inflater = new Inflater(true);      TempBuffer buf = TempBuffer.allocate();      byte []buffer = buf.getBuffer();      boolean isFinished = false;      TempStream out = new TempStream();      while (! isFinished) {	while (! isFinished && inflater.needsInput()) {	  int len = data.read(buffer, 0, buffer.length);	  if (len > 0) {	    inflater.setInput(buffer, 0, len);	  }	  else {	    isFinished = true;	  }	}	int len;	while ((len = inflater.inflate(buffer, 0, buffer.length)) > 0) {	  out.write(buffer, 0, len, false);	}      }      inflater.end();      TempBuffer.free(buf);      return new TempBufferStringValue(out.getHead());    } catch (Exception e) {      env.warning(e);      return BooleanValue.FALSE;    }  }