Add more log4j modules in dependencyManagement section.
Use variable from requireNonNull.
Add field support for @PluginValue.

  - As with another annotation recently updated, this one is technically already supported by PluginBuilder.
Note possible runtime exception thrown by Builders.
Add ReflectionUtil class for reflection operations.

  - Even though every AccessibleObject is also a Member, this is not reflected in the JDK; thus, generics need to be used.
  - Inspired by Spring: https://github.com/spring-projects/spring-framework/blob/master/spring-core/src/main/java/org/springframework/util/ReflectionUtils.java
Narrow scope of warning suppression.
Add fallback visitor strategy lookup.

  - Weaken findVisitor() return type due to lack of concrete generics usage.
  - Look for an annotated annotation visitor strategy if none is found for the main one.
  - Part of API improvements for LOG4J2-825.
Only use plugin visitor value if non-null.

  - Makes behavior in factory method version match up better with builder class version.
  - Allows for multiple annotations on a single item where only one of them may return a value (e.g., for LOG4J2-825).
Revert unnecessary annotation graph walking.
Add type converter for ConsoleAppender.Target enum.
Add link in javadoc.
Add core constraint validation classes.

  - Part of LOG4J2-825.
Add in constraint validator logic to PluginBuilder.

  - Also includes a couple clean-up things.
Add required annotation.

  - Part of LOG4J2-825.
Add tests for required annotation.

  - Part of LOG4J2-825.