code: public void deserialize(InputStream in,
                              DigitalObject obj,
                              String encoding,
                              int transContext) throws ObjectIntegrityException,
              StreamIOException, UnsupportedEncodingException {
          logger.debug("Deserializing {} for transContext: {}",
                  m_format.uri, transContext);
  
  
          // make resettable and pool these handlers?
          FOXMLContentHandler handler =
                  new FOXMLContentHandler(m_format, m_translator, transContext, encoding, obj);
          try {
              XmlTransformUtility.parseWithoutValidating(in, handler);
          } catch (IOException ioe) {
              throw new StreamIOException("low-level stream io problem occurred "
                      + "while sax was parsing this object.");
          } catch (SAXException se) {
              throw new ObjectIntegrityException("FOXML IO stream was bad : "
                      + se.getMessage(), se);
          }
          logger.debug("Just finished parse.");
  
          if (!handler.rootElementFound()) {
              throw new ObjectIntegrityException("FOXMLDODeserializer: Input stream is not valid FOXML."
                      + " The digitalObject root element was not detected.");
          }
  
          m_translator.normalizeDatastreams(obj, transContext, encoding);
      }
docs: {@inheritDoc}