public func == <T: Equatable>(lhs: [T?], rhs: [T?]) -> Bool {
  if lhs.count != rhs.count { return false }
  for (lhs, rhs) in zip(lhs, rhs) where lhs != rhs { return false }
  return true
}