@Override
 public String getPayloadAttributeValue(QName attName) {
   if (lazySource.isPayloadStreamReader()) {
     XMLStreamReader reader = lazySource.readPayload();
     if (reader.getEventType() == XMLStreamConstants.START_ELEMENT) {
       return reader.getAttributeValue(attName.getNamespaceURI(), attName.getLocalPart());
     }
   }
   return null;
 }
 @Override
 public String getPayloadAttributeValue(String attName) {
   if (lazySource.isPayloadStreamReader()) {
     XMLStreamReader reader = lazySource.readPayload();
     if (reader.getEventType() == XMLStreamConstants.START_ELEMENT) {
       return reader.getAttributeValue(null, attName);
     }
   }
   return null;
 }
 public StaxLazySourceBridge(LazyEnvelopeSource src, SOAPPartImpl soapPart) throws SOAPException {
   super(soapPart);
   lazySource = src;
   final String soapEnvNS = soapPart.getSOAPNamespace();
   try {
     breakpoint =
         new XMLStreamReaderToXMLStreamWriter.Breakpoint(src.readToBodyStarTag(), saajWriter) {
           public boolean proceedAfterStartElement() {
             if ("Body".equals(reader.getLocalName())
                 && soapEnvNS.equals(reader.getNamespaceURI())) {
               return false;
             } else return true;
           }
         };
   } catch (XMLStreamException e) {
     throw new SOAPException(e);
   }
 }
 @Override
 public QName getPayloadQName() {
   return lazySource.getPayloadQName();
 }
 @Override
 public XMLStreamReader getPayloadReader() {
   return lazySource.readPayload();
   //              throw new UnsupportedOperationException();
 }
 public void writePayloadTo(XMLStreamWriter writer) throws XMLStreamException {
   lazySource.writePayloadTo(writer);
 }