Assumed to use `SideEffect` for recording which part of the array/object attribute cause failer. Like ```ts export type SideEffect = (value: unknown) => void; export type Predicate<T> = (x: unknown, sideEffect?: SideEffect) => x is T; ```