synchronized DocumentArchive get() throws FileNotFoundException { if (mArchive != null) { return mArchive; } try { if (mLocalFile != null) { mArchive = DocumentArchive.createForLocalFile( mProvider.getContext(), mLocalFile, mId.mArchiveId, mIdDelimiter, mNotificationUri); } else { mArchive = DocumentArchive.createForParcelFileDescriptor( mProvider.getContext(), mProvider.openDocument(mId.mArchiveId, "r", null /* signal */), mId.mArchiveId, mIdDelimiter, mNotificationUri); } } catch (IOException e) { throw new IllegalStateException(e); } return mArchive; }