String: func2(func1(input1, input2), input3) Match succeeded --------------- Before brackets:- -->func2<-- Bracket pairs:- (input1, input2) (func1(input1, input2), input3) After brackets:- --><-- String: func1(input1, func2(input2, input3)) Match succeeded --------------- Before brackets:- -->func1<-- Bracket pairs:- (input2, input3) (input1, func2(input2, input3)) After brackets:- --><-- String: Contains i(mbalan(ced Br(ack)ets, )one op)en m)missing Match failed String: So(me m(ultip)le n(est(s in) thi)s o)ne Match succeeded --------------- Before brackets:- -->So<-- Bracket pairs:- (ultip) (s in) (est(s in) thi) (me m(ultip)le n(est(s in) thi)s o) After brackets:- -->ne<--