### Question:
AssetSpliterator implements Spliterator<StorageAsset>, Closeable { @Override public int characteristics( ) { return CHARACTERISTICS; } AssetSpliterator( int splitThreshold, StorageAsset... assets);  AssetSpliterator( StorageAsset... assets); protected  AssetSpliterator(); protected  AssetSpliterator( int splitThreshold); protected  AssetSpliterator( int splitThreshold, Set<StorageAsset> visitedContainers); protected  AssetSpliterator( List<StorageAsset> baseList, Set<StorageAsset> visitedContainers); @Override void close( ); @Override boolean tryAdvance( Consumer<? super StorageAsset> action ); @Override void forEachRemaining( Consumer<? super StorageAsset> action ); @Override Spliterator<StorageAsset> trySplit( ); @Override long estimateSize( ); @Override int characteristics( ); static final int DEFAULT_SPLIT_THRESHOLD; }### Answer:
@Test void checkCharacteristics() { StorageAsset root = createTree( ); AssetSpliterator spliterator = new AssetSpliterator( root ); assertEquals( Spliterator.NONNULL, spliterator.characteristics( ) & Spliterator.NONNULL ); assertEquals( Spliterator.CONCURRENT, spliterator.characteristics( ) & Spliterator.CONCURRENT ); assertEquals( Spliterator.DISTINCT, spliterator.characteristics( ) & Spliterator.DISTINCT ); }