private TrapStatementAst FindMatchingTrapStatement(ReadOnlyCollection<TrapStatementAst> trapStatements, Exception ex)
{
TrapStatementAst trapStatementAst = (from statement in trapStatements
where IsExactMatch(statement.TrapType, ex)
select statement).FirstOrDefault();
if (trapStatementAst != null)
{
return trapStatementAst;
}
trapStatementAst = (from statement in trapStatements
where IsInheritedMatch(statement.TrapType, ex)
select statement).FirstOrDefault();
if (trapStatementAst != null)
{
return trapStatementAst;
}
return (from statement in trapStatements
where statement.TrapType == null
select statement).FirstOrDefault();
}