IsmReader extends NativeReader<WindowedValue<IsmRecord<V>>> { public abstract boolean isEmpty() throws IOException;  static Closeable setSideInputReadContext(SideInputReadCounter readCounter); static SideInputReadCounter getCurrentSideInputCounter(); @Override abstract IsmPrefixReaderIterator iterator(); abstract IsmPrefixReaderIterator overKeyComponents(List<?> keyComponents); abstract IsmPrefixReaderIterator overKeyComponents(
      List<?> keyComponents, int shardId, RandomAccessData keyBytes); abstract boolean isInitialized(); abstract boolean isEmpty(); abstract ResourceId getResourceId(); abstract IsmRecordCoder<V> getCoder(); @Override String toString();  }
@Test public void testIsEmpty() throws Exception { File tmpFile = tmpFolder.newFile(); List<IsmRecord<byte[]>> data = new ArrayList<>(); writeElementsToFile(data, tmpFile); IsmReader<byte[]> reader = new IsmReaderImpl<byte[]>( FileSystems.matchSingleFileSpec(tmpFile.getAbsolutePath()).resourceId(), CODER, cache); assertFalse(reader.isInitialized()); assertTrue(reader.isEmpty()); assertTrue(reader.isInitialized()); }