public static SchemaAnnotationProcessResult process(List<SchemaAnnotationHandler> handlers,
                                                      DataSchema dataSchema, AnnotationProcessOption options)
  {
    return process(handlers, dataSchema, options, true);
  }
@Test
  public void testHandlerResolveException() throws Exception
  {
    String failureMessage = "Intentional failure";
    SchemaAnnotationHandler testHandler = new SchemaAnnotationHandler()
    {
      @Override
      public ResolutionResult resolve(List<Pair<String, Object>> propertiesOverrides,
                                      ResolutionMetaData resolutionMetadata)
      {
        throw new RuntimeException(failureMessage);
      }

      @Override
      public String getAnnotationNamespace()
      {
        return TEST_ANNOTATION_LABEL;
      }

      @Override
      public AnnotationValidationResult validate(Map<String, Object> resolvedProperties, ValidationMetaData metaData)
      {
        return new AnnotationValidationResult();
      }
    };
    RecordDataSchema testSchema = (RecordDataSchema) TestUtil.dataSchemaFromPdlString(simpleTestSchema);

    try {
      SchemaAnnotationProcessor.SchemaAnnotationProcessResult result =
          SchemaAnnotationProcessor.process(Arrays.asList(testHandler), testSchema,
                                            new SchemaAnnotationProcessor.AnnotationProcessOption());
    }
    catch (IllegalStateException e)
    {
      e.getMessage()
       .equals(String.format(
           "Annotation processing failed when resolving annotations in the schema using the handler for " +
           "annotation namespace \"%s\"", TEST_ANNOTATION_LABEL));
    }
  }