@SuppressWarnings({ "rawtypes", "unchecked" })
    public void processAnnotation(TestContext context, final Annotation[] annotations) {
        try {
            increaseIndent();
            if ( null != annotations && 0 < annotations.length ) {
                debug(annotations);
                final Annotation annotation = annotations[0];
                final Processor processor = annotation.annotationType().getAnnotation(Processor.class);
                if ( null == processor ) {
                    throw new NullPointerException("Cannot find Processor for Annotation: "
                            + annotation.annotationType().getName());
                }
                final Class<? extends AbsScriptEngine> processorClass = (Class<? extends AbsScriptEngine>) processor
                        .value();
                final AbsScriptEngine processInstance = processorClass.newInstance();
                processInstance.doProcess(context, annotations);
            }
        } catch (Exception ex) {
            throw new IllegalStateException(ex);
        } finally {
            decreaseIndent();
        }
    }