public void CompareInternal(try_handler left, try_handler right) { if (left == null && right != null || left != null && right == null) throw_not_equal(left, right); if (left != null && right != null) { if (left.GetType() != right.GetType()) throw_not_equal(left, right); if (left is try_handler_except) CompareInternal(left as try_handler_except, right as try_handler_except); else if (left is try_handler_finally) CompareInternal(left as try_handler_finally, right as try_handler_finally); } }