code: @Override
    public void loadEdits() throws IOException {
  
      try {
        v.start();
        v.visitEnclosingElement(EditsElement.EDITS);
  
        IntToken editsVersionToken = v.visitInt(EditsElement.EDITS_VERSION);
        editsVersion = editsVersionToken.value;
        if(!canLoadVersion(editsVersion)) {
          throw new IOException("Cannot process editLog version " +
            editsVersionToken.value);
        }
  
        FSEditLogOpCodes editsOpCode;
        do {
          v.visitEnclosingElement(EditsElement.RECORD);
  
          ByteToken opCodeToken;
          try {
            opCodeToken = v.visitByte(EditsElement.OPCODE);
          } catch (EOFException eof) {
            // Getting EOF when reading the opcode is fine --
            // it's just a finalized edits file
            // Just fake the OP_INVALID here.
            opCodeToken = new ByteToken(EditsElement.OPCODE);
            opCodeToken.fromByte(FSEditLogOpCodes.OP_INVALID.getOpCode());
            v.visit(opCodeToken);
          }
          editsOpCode = FSEditLogOpCodes.fromByte(opCodeToken.value);
  
          v.visitEnclosingElement(EditsElement.DATA);
  
          visitOpCode(editsOpCode);
  
          v.leaveEnclosingElement(); // DATA
          
          if (editsOpCode != FSEditLogOpCodes.OP_INVALID && 
              LayoutVersion.supports(Feature.EDITS_CHESKUM, editsVersion)) {
            v.visitInt(EditsElement.CHECKSUM);
          }
          v.leaveEnclosingElement(); // RECORD
        } while(editsOpCode != FSEditLogOpCodes.OP_INVALID);
  
        v.leaveEnclosingElement(); // EDITS
        v.finish();
      } catch(IOException e) {
        // Tell the visitor to clean up, then re-throw the exception
        v.finishAbnormally();
        throw e;
      }
    }
docs: Loads edits file, uses visitor to process all elements