code: public <T, E> void processAnnotatedType(@Observes ProcessAnnotatedType<T> pat) {
  
          Class<?> candidateClass = pat.getAnnotatedType().getJavaClass();
  
          if (!candidateClass.isInterface()) {
  
              try {
                  if (Binding.class.isAssignableFrom(candidateClass)) {
  
                      @SuppressWarnings("unchecked")
                      Class<? extends Binding<T, E>> bindingClass = (Class<? extends Binding<T, E>>) candidateClass;
                      Binding<T, E> myBinding = bindingClass.newInstance();
                      BINDING.registerBinding(myBinding.getBoundClass(), myBinding.getTargetClass(), myBinding);
                  } else if (ToMarshaller.class.isAssignableFrom(candidateClass)
                          || FromUnmarshaller.class.isAssignableFrom(candidateClass)) {
                      if (ToMarshaller.class.isAssignableFrom(candidateClass)) {
  
                          @SuppressWarnings("unchecked")
                          Class<? extends ToMarshaller<T,E>> bindingClass = (Class<? extends ToMarshaller<T,E>>) candidateClass;
                          ToMarshaller<T,E> myBinding = bindingClass.newInstance();
                          BINDING.registerMarshaller(myBinding.getBoundClass(), myBinding.getTargetClass(), myBinding);
                      }
                      if (FromUnmarshaller.class.isAssignableFrom(candidateClass)) {
  
                          @SuppressWarnings("unchecked")
                          Class<? extends FromUnmarshaller<T,E>> bindingClass = (Class<? extends FromUnmarshaller<T,E>>) candidateClass;
                          FromUnmarshaller<T,E> myBinding = bindingClass.newInstance();
                          BINDING.registerUnmarshaller(myBinding.getBoundClass(), myBinding.getTargetClass(), myBinding);
                      }
                  } else if (Converter.class.isAssignableFrom(candidateClass)) {
  
                      @SuppressWarnings("unchecked")
                      Class<? extends Converter<T, E>> bindingClass = (Class<? extends Converter<T, E>>) candidateClass;
                      Converter<T,E> myConverter = bindingClass.newInstance();
                      BINDING.registerConverter(myConverter.getInputClass(), myConverter.getOutputClass(), myConverter);
                  } else {
                  	BINDING.registerAnnotatedClasses(candidateClass);
                  }
              } catch (InstantiationException e) {
                  throw new IllegalStateException("Cannot instantiate binding class: " + candidateClass);
              } catch (IllegalAccessException e) {
                  throw new IllegalStateException("Cannot instantiate binding class: " + candidateClass);
              }
          }
      }
docs: /* @Override