public PTrailer loadTrailer(long position) {
        PTrailer trailer = null;
        try {
            if (m_SeekableInput != null) {
                m_SeekableInput.beginThreadAccess();
                long savedPosition = m_SeekableInput.getAbsolutePosition();
                m_SeekableInput.seekAbsolute(position);
                Parser parser = new Parser(m_SeekableInput);
                Object obj = parser.getObject(library);
                if (obj instanceof PObject)
                    obj = ((PObject) obj).getObject();
                trailer = (PTrailer) obj;
                if (trailer != null)
                    trailer.setPosition(position);
                m_SeekableInput.seekAbsolute(savedPosition);
            }
        }
        catch (Exception e) {
            logger.log(Level.FINE,
                    "Error loading PTrailer instance: " + position, e);
        }
        finally {
            if (m_SeekableInput != null)
                m_SeekableInput.endThreadAccess();
        }
        return trailer;
    }