private void cacheMessage() {

    if (buffer == null) {
      try {
        buffer = new com.sun.xml.stream.buffer.MutableXMLStreamBuffer();
        buffer.createFromXMLStreamReader(reader);
      } catch (javax.xml.stream.XMLStreamException ex) {
        logger.log(Level.SEVERE, LogStringsMessages.WSS_1611_PROBLEM_CACHING(), ex);
        throw new com.sun.xml.wss.impl.XWSSecurityRuntimeException(ex);
      }

      try {
        reader = buffer.readAsXMLStreamReader();
        reader = new VerifiedMessageXMLStreamReader(reader, bodyEnvNs);
        reader.next();
      } catch (XMLStreamException ex) {
        logger.log(Level.SEVERE, LogStringsMessages.WSS_1612_ERROR_READING_BUFFER(), ex);
        throw new com.sun.xml.wss.impl.XWSSecurityRuntimeException(ex);
      }
    }
  }