code: private <T> List<Method> getPostInjectMethods(final T target) {
  
          final List<Method> methods = ClassStreams.selfAndSupertypes(target.getClass())
                                             .map(Class::getDeclaredMethods)
                                             .flatMap(Arrays::stream)
                                             .filter(method -> method.getAnnotation(PostInject.class) != null)
                                             .collect(Collectors.toList());
          Collections.sort(methods, (m1, m2) -> m1.getAnnotation(PostInject.class).value() - m2.getAnnotation
                  (PostInject.class).value());
          return methods;
      }
docs: Collects the methods annotated with {@link PostInject} in order of priority.
  @param target
  the target object whose methods should be collected. Supertype methods are collected as well.
  @param <T>
  @return
  a list of methods annotated with {@link PostInject} ordered by priority