code: public FSEditLogOp readOp() throws IOException {
      FSEditLogOp ret;
      if (cachedOp != null) {
        ret = cachedOp;
        cachedOp = null;
        return ret;
      }
      return nextOp();
    }
docs: Read an operation from the stream
  @return an operation from the stream or null if at end of stream
  @throws IOException if there is an error reading from the stream