public bool IsMatch(List <IExpression> list, int pos, int deep) { if (deep == 0) { if (_ifElse.IsMatch(list, pos)) { return(false); } else if (_ifElse2.IsMatch(list, pos)) { return(IsMatch(list, pos + 4, deep + 1)); } else { return(false); } } else { if (_ifElse.IsMatch(list, pos)) { return(true); } else if (_ifElse2.IsMatch(list, pos)) { return(IsMatch(list, pos + 4, deep + 1)); } else { return(false); } } }