import "Iterator" as Iterator importJava "java.util.Set" where data T a contains :: T a -> a -> Boolean size :: T a -> Integer isEmpty :: T a -> Boolean @private iterator :: T a -> Iterator.T a @inline iter :: (a -> b) -> T a -> () iter f s = runProc (Iterator.iter f (iterator s)) @inline iterB :: (a -> Boolean) -> T a -> Boolean iterB f s = runProc (Iterator.iterB f (iterator s)) @inline iterI :: (Integer -> a -> b) -> T a -> () iterI f s = runProc (Iterator.iterI f (iterator s)) @inline fold :: (a -> b -> a) -> a -> T b -> a fold f init s = runProc (Iterator.fold f init (iterator s)) importJava "java.util.Collections" where singleton :: a -> T a @JavaName emptySet empty :: T a importJava "gnu.trove.set.hash.THashSet" where @JavaName "" fromList :: [a] -> T a importJava "java.util.ArrayList" where @JavaName "" toList :: T a -> [a]