Returns an optional with the first throwable in the causal chain that is assignable to the provided cause type,
and satisfies the provided cause predicate, Optional.empty() otherwise.
Since the RecordSchema stores the field name and value pairs in a HashMap it makes the retrieval case-sensitive, so we create a name mapper for case-insensitive handling.