@Override
    public RecoverableWriter.ResumeRecoverable persist() throws IOException {
        LOGGER.trace("Persisting write channel for blob {}", finalBlobIdentifier);
        closeWriteChannelIfExists();
        return createResumeRecoverable();
    }
@Test
    public void shouldPersist() throws IOException {
        if (!closed) {
            GSResumeRecoverable recoverable = (GSResumeRecoverable) fsDataOutputStream.persist();
            assertEquals(blobIdentifier, recoverable.finalBlobIdentifier);
            if (empty) {
                assertEquals(0, recoverable.componentObjectIds.size());
            } else {
                assertArrayEquals(
                        componentObjectIds.toArray(), recoverable.componentObjectIds.toArray());
            }
            assertEquals(position, recoverable.position);
            assertFalse(recoverable.closed);
        }
    }