Affects Version/s: 4.3.8, 5.0 M5
1. HandlerExecutionChain has attribute: interceptors and interceptorList, and can be classed into three state : state-i, state-ii, state-iii .
2. calling getInterceptors, addInterceptor, or addInterceptors , can change state.
3. construct a HandlerExecutionChain using a handler which is not instanceof HandlerExecutionChain, will be state-i;
4. construct a HandlerExecutionChain using a handler which is instanceof HandlerExecutionChain, will be state-ii;
5. calling toString in state-i will get the wrong number of interceptors. for example:
LocaleChangeInterceptor local = new LocaleChangeInterceptor();
HandlerExecutionChain chain = new HandlerExecutionChain(new Object(), local);
"chain" has one interceptor "local", but the toString() missed it.