///|
pub(open) trait Collection {
  fn len(Self) -> Int
  fn is_empty(Self) -> Bool
}

///|
pub(open) trait Deterministic: Collection {
  fn fingerprint(Self) -> UInt64
  fn ordered_eq(Self, Self) -> Bool
}