public Object chain(Object target, Method method, Object[] args) {
			if (intercepters.hasNext()) {
				ContextIntercepter intercepter = intercepters.next();
				return intercepter.intercept(target, method, args, this);
			} else {
				try {
					return method.invoke(target, args);
				} catch (IllegalAccessException e) {
					throw new RuntimeException(e);
				} catch (IllegalArgumentException e) {
					throw new RuntimeException(e);
				} catch (InvocationTargetException e) {
					throw new RuntimeException(e);
				}
			}
		}