HandlerExecutionChain has attribute: interceptors and interceptorList, and can be classed into three state : state-i, state-ii, state-iii .
calling getInterceptors, addInterceptor, or addInterceptors , can change state.
construct a HandlerExecutionChain using a handler which is not instanceof HandlerExecutionChain, will be state-i;
construct a HandlerExecutionChain using a handler which is instanceof HandlerExecutionChain, will be state-ii;
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.