AbstractBlobStore implements GarbageCollectableBlobStore,
        Cache.Backend<AbstractBlobStore.BlockId, AbstractBlobStore.Data> { protected abstract void mark(BlockId id) throws Exception;  void setBlockSizeMin(int x); @Override long getBlockSizeMin(); @Override void setBlockSize(int x); void setStatsCollector(BlobStatsCollector stats); int getBlockSize(); @Override String writeBlob(String tempFilePath); @Override String writeBlob(InputStream in); @Override String writeBlob(InputStream in, BlobOptions options); @Override InputStream getInputStream(String blobId); @Override String getReference(@NotNull String blobId); @Override String getBlobId(@NotNull String reference); void setReferenceKey(byte[] referenceKey); void setReferenceKeyEncoded(String encodedKey); void setReferenceKeyPlainText(String textKey); @Override void clearInUse(); @Override abstract void startMark(); @Override abstract int sweep(); @Override int readBlob(String blobId, long pos, byte[] buff, int off,
            int length); @Override Data load(BlockId id); @Override long getBlobLength(String blobId); @Override Iterator<String> resolveChunks(String blobId); @Override boolean deleteChunks(List<String> chunkIds, long maxLastModifiedTime); @Override void close();  }
@Test public void testIllegalIdentifier3() throws Exception { if (store instanceof AbstractBlobStore) { try { ((AbstractBlobStore) store).mark("ff"); fail(); } catch (Exception e) { } } }