You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2022/03/14 12:27:28 UTC

[logging-log4j2] 15/16: LOG4J2-3393 Fix revapi issues.

This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch LOG4J2-3393
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 6e6bd235ebdad89a27944a94e30f60c9b52982b8
Author: Volkan Yazici <vo...@yazi.ci>
AuthorDate: Mon Feb 28 12:09:20 2022 +0100

    LOG4J2-3393 Fix revapi issues.
---
 log4j-layout-template-json/revapi.json | 1596 ++++++++++++++++++--------------
 1 file changed, 880 insertions(+), 716 deletions(-)

diff --git a/log4j-layout-template-json/revapi.json b/log4j-layout-template-json/revapi.json
index 5737d30..a9745c1 100644
--- a/log4j-layout-template-json/revapi.json
+++ b/log4j-layout-template-json/revapi.json
@@ -16,721 +16,885 @@
     }
   },
   {
-    "extension": "revapi.ignore",
-    "configuration": [
-      {
-        "code": "java.method.returnTypeChanged",
-        "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalFields org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder::getEventTemplateAdditionalFields()",
-        "new": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField[] org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder::getEventTemplateAdditionalFields()",
-        "justification": "LOG4J2-2961 Refactored for simplicity since it was already broken due to missing @PluginBuilderAttribute annotations"
-      },
-      {
-        "code": "java.method.parameterTypeChanged",
-        "old": "parameter org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder::setEventTemplateAdditionalFields(===org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalFields===)",
-        "new": "parameter org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder::setEventTemplateAdditionalFields(===org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField[]===)",
-        "justification": "LOG4J2-2961 Refactored for simplicity since it was already broken due to missing @PluginBuilderAttribute annotations"
-      },
-      {
-        "code": "java.class.removed",
-        "old": "class org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalFields",
-        "justification": "LOG4J2-2961 Refactored for simplicity since it was already broken due to missing @PluginBuilderAttribute annotations"
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.String org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults::getMdcKeyPattern()",
-        "justification": "Removed unused property getter."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.String org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults::getNdcPattern()",
-        "justification": "Removed unused property getter."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.Uris",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.Uris",
-        "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.util.Uris>",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.Uris",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.Uris",
-        "interface": "java.io.Serializable",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults::valueOf(java.lang.String)",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults[] org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults::values()",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerInheritsFromClass",
-        "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "new": "class org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.kindChanged",
-        "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "new": "class org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "new": "class org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults>",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "new": "class org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
-        "interface": "java.io.Serializable",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers::valueOf(java.lang.String)",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers[] org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers::values()",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerInheritsFromClass",
-        "old": "enum org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.kindChanged",
-        "old": "enum org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers>",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
-        "interface": "java.io.Serializable",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.util.RecyclerFactories org.apache.logging.log4j.layout.template.json.util.RecyclerFactories::valueOf(java.lang.String)",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.util.RecyclerFactories[] org.apache.logging.log4j.layout.template.json.util.RecyclerFactories::values()",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerInheritsFromClass",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.kindChanged",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.util.RecyclerFactories>",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
-        "interface": "java.io.Serializable",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values::valueOf(java.lang.String)",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values[] org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values::values()",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerInheritsFromClass",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.kindChanged",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values>",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
-        "interface": "java.io.Serializable",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.util.StringParameterParser org.apache.logging.log4j.layout.template.json.util.StringParameterParser::valueOf(java.lang.String)",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.util.StringParameterParser[] org.apache.logging.log4j.layout.template.json.util.StringParameterParser::values()",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerInheritsFromClass",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.kindChanged",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.util.StringParameterParser>",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerImplementsInterface",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
-        "interface": "java.io.Serializable",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.util.Uris",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.util.Uris",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.util.Uris",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.util.Uris",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.util.Uris",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.util.Uris org.apache.logging.log4j.layout.template.json.util.Uris::valueOf(java.lang.String)",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.util.Uris[] org.apache.logging.log4j.layout.template.json.util.Uris::values()",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.noLongerInheritsFromClass",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.Uris",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.Uris",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.class.kindChanged",
-        "old": "enum org.apache.logging.log4j.layout.template.json.util.Uris",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.Uris",
-        "justification": "Replaced 'enum' singletons with 'final class'es."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method char[] org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedPrintWriter::getBuffer()",
-        "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedPrintWriter::getCapacity()",
-        "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method int org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedPrintWriter::getPosition()",
-        "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method boolean org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedPrintWriter::isTruncated()",
-        "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible."
-      },
-      {
-        "code": "java.class.visibilityReduced",
-        "old": "class org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedWriter",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedWriter",
-        "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Builder org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Builder::setType(org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Type)",
-        "justification": "LOG4J2-2973 Rename EventTemplateAdditionalField#type (conflicting with properties file parser) to #format."
-      },
-      {
-        "code": "java.class.removed",
-        "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Type",
-        "justification": "LOG4J2-2973 Rename EventTemplateAdditionalField#type (conflicting with properties file parser) to #format."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Type org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField::getType()",
-        "justification": "LOG4J2-2973 Rename EventTemplateAdditionalField#type (conflicting with properties file parser) to #format."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"EndOfBatchResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method java.lang.String org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder::getTruncatedStringSuffix()",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.method.removed",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder::setStackTraceElementObjectResolver(org.apache.logging.log4j.layout.template.json.resolver.TemplateResolver<java.lang.StackTraceElement>)",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.method.parameterTypeChanged",
-        "old": "parameter org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder::setSubstitutor(===org.apache.logging.log4j.core.lookup.StrSubstitutor===)",
-        "new": "parameter org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder::setSubstitutor(===org.apache.logging.log4j.layout.template.json.resolver.EventResolverStringSubstitutor===)",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.method.returnTypeTypeParametersChanged",
-        "old": "method java.util.Map<java.lang.String, org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverFactory<org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext, ? extends org.apache.logging.log4j.layout.template.json.resolver.TemplateResolver<org.apache.logging.log4j.core.LogEvent>>> org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext::getResolverFactoryByName()",
-        "new": "method java.util.Map<java.lang.String, org.apache.logging.log4j.layout.template.json.resolver.EventResolverFactory> org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext::getResolverFactoryByName()",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.method.returnTypeChanged",
-        "old": "method org.apache.logging.log4j.core.lookup.StrSubstitutor org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext::getSubstitutor()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.EventResolverStringSubstitutor org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext::getSubstitutor()",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ExceptionResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ExceptionRootCauseResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"LevelResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"LoggerResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"MainMapResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"MapResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"MarkerResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"MessageParameterResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"MessageResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"PatternResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"SourceResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.class.removed",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.StackTraceElementObjectResolverContext",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ThreadContextDataResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ThreadContextDataResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ThreadResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "method org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory::getInstance()",
-        "new": "method org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory::getInstance()",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"TimestampResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.added",
-        "old": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory",
-        "new": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory",
-        "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ThreadContextStackResolverFactory\", category = \"JsonTemplateResolverFactory\")",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.annotation.attributeValueChanged",
-        "old": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories.RecyclerFactoryConverter",
-        "new": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories.RecyclerFactoryConverter",
-        "annotationType": "org.apache.logging.log4j.core.config.plugins.Plugin",
-        "attribute": "name",
-        "oldValue": "\"RecyclerFactory\"",
-        "newValue": "\"RecyclerFactoryConverter\"",
-        "justification": "LOG4J2-3004 Add plugin support."
-      },
-      {
-        "code": "java.class.removed",
-        "old": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories.RecyclerFactoryConverter",
-        "justification": "LOG4J2-3004 Add plugin support."
-      }
-    ]
+    "extension": "revapi.differences",
+    "configuration": {
+      "differences": [
+        {
+          "ignore": true,
+          "code": "java.method.returnTypeChanged",
+          "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalFields org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder::getEventTemplateAdditionalFields()",
+          "new": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField[] org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder::getEventTemplateAdditionalFields()",
+          "justification": "LOG4J2-2961 Refactored for simplicity since it was already broken due to missing @PluginBuilderAttribute annotations"
+        },
+        {
+          "ignore": true,
+          "code": "java.method.parameterTypeChanged",
+          "old": "parameter org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder::setEventTemplateAdditionalFields(===org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalFields===)",
+          "new": "parameter org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.Builder::setEventTemplateAdditionalFields(===org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField[]===)",
+          "justification": "LOG4J2-2961 Refactored for simplicity since it was already broken due to missing @PluginBuilderAttribute annotations"
+        },
+        {
+          "ignore": true,
+          "code": "java.class.removed",
+          "old": "class org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalFields",
+          "justification": "LOG4J2-2961 Refactored for simplicity since it was already broken due to missing @PluginBuilderAttribute annotations"
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.String org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults::getMdcKeyPattern()",
+          "justification": "Removed unused property getter."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.String org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults::getNdcPattern()",
+          "justification": "Removed unused property getter."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.Uris",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.Uris",
+          "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.util.Uris>",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.Uris",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.Uris",
+          "interface": "java.io.Serializable",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults::valueOf(java.lang.String)",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults[] org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults::values()",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerInheritsFromClass",
+          "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "new": "class org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.kindChanged",
+          "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "new": "class org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "new": "class org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults>",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "new": "class org.apache.logging.log4j.layout.template.json.JsonTemplateLayoutDefaults",
+          "interface": "java.io.Serializable",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers::valueOf(java.lang.String)",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers[] org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers::values()",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerInheritsFromClass",
+          "old": "enum org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.kindChanged",
+          "old": "enum org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers>",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.TemplateResolvers",
+          "interface": "java.io.Serializable",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.util.RecyclerFactories org.apache.logging.log4j.layout.template.json.util.RecyclerFactories::valueOf(java.lang.String)",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.util.RecyclerFactories[] org.apache.logging.log4j.layout.template.json.util.RecyclerFactories::values()",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerInheritsFromClass",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.kindChanged",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.util.RecyclerFactories>",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories",
+          "interface": "java.io.Serializable",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values::valueOf(java.lang.String)",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values[] org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values::values()",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerInheritsFromClass",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.kindChanged",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values>",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser.Values",
+          "interface": "java.io.Serializable",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.util.StringParameterParser org.apache.logging.log4j.layout.template.json.util.StringParameterParser::valueOf(java.lang.String)",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.util.StringParameterParser[] org.apache.logging.log4j.layout.template.json.util.StringParameterParser::values()",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerInheritsFromClass",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.kindChanged",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "interface": "java.lang.Comparable<org.apache.logging.log4j.layout.template.json.util.StringParameterParser>",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerImplementsInterface",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.StringParameterParser",
+          "interface": "java.io.Serializable",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::compareTo(E) @ org.apache.logging.log4j.layout.template.json.util.Uris",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.Class<E> java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::getDeclaringClass() @ org.apache.logging.log4j.layout.template.json.util.Uris",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.String java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::name() @ org.apache.logging.log4j.layout.template.json.util.Uris",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::ordinal() @ org.apache.logging.log4j.layout.template.json.util.Uris",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method <T extends java.lang.Enum<T extends java.lang.Enum<T>>> T java.lang.Enum<E extends java.lang.Enum<E extends java.lang.Enum<E>>>::valueOf(java.lang.Class<T>, java.lang.String) @ org.apache.logging.log4j.layout.template.json.util.Uris",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.util.Uris org.apache.logging.log4j.layout.template.json.util.Uris::valueOf(java.lang.String)",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.util.Uris[] org.apache.logging.log4j.layout.template.json.util.Uris::values()",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.noLongerInheritsFromClass",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.Uris",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.Uris",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.kindChanged",
+          "old": "enum org.apache.logging.log4j.layout.template.json.util.Uris",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.Uris",
+          "justification": "Replaced 'enum' singletons with 'final class'es."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method char[] org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedPrintWriter::getBuffer()",
+          "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedPrintWriter::getCapacity()",
+          "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method int org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedPrintWriter::getPosition()",
+          "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method boolean org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedPrintWriter::isTruncated()",
+          "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.visibilityReduced",
+          "old": "class org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedWriter",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedWriter",
+          "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Builder org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Builder::setType(org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Type)",
+          "justification": "LOG4J2-2973 Rename EventTemplateAdditionalField#type (conflicting with properties file parser) to #format."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.removed",
+          "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Type",
+          "justification": "LOG4J2-2973 Rename EventTemplateAdditionalField#type (conflicting with properties file parser) to #format."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Type org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField::getType()",
+          "justification": "LOG4J2-2973 Rename EventTemplateAdditionalField#type (conflicting with properties file parser) to #format."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"EndOfBatchResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method java.lang.String org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder::getTruncatedStringSuffix()",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.removed",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder::setStackTraceElementObjectResolver(org.apache.logging.log4j.layout.template.json.resolver.TemplateResolver<java.lang.StackTraceElement>)",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.parameterTypeChanged",
+          "old": "parameter org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder::setSubstitutor(===org.apache.logging.log4j.core.lookup.StrSubstitutor===)",
+          "new": "parameter org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext.Builder::setSubstitutor(===org.apache.logging.log4j.layout.template.json.resolver.EventResolverStringSubstitutor===)",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.returnTypeTypeParametersChanged",
+          "old": "method java.util.Map<java.lang.String, org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverFactory<org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext, ? extends org.apache.logging.log4j.layout.template.json.resolver.TemplateResolver<org.apache.logging.log4j.core.LogEvent>>> org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext::getResolverFactoryByName()",
+          "new": "method java.util.Map<java.lang.String, org.apache.logging.log4j.layout.template.json.resolver.EventResolverFactory> org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext::getResolverFactoryByName()",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.method.returnTypeChanged",
+          "old": "method org.apache.logging.log4j.core.lookup.StrSubstitutor org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext::getSubstitutor()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.EventResolverStringSubstitutor org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext::getSubstitutor()",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ExceptionResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ExceptionRootCauseResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"LevelResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"LoggerResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"MainMapResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"MapResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"MarkerResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"MessageParameterResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"MessageResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.PatternResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"PatternResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"SourceResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.removed",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.StackTraceElementObjectResolverContext",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ThreadContextDataResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ThreadContextDataResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ThreadResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "method org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory::getInstance()",
+          "new": "method org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory::getInstance()",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.PluginFactory",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"TimestampResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.added",
+          "old": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory",
+          "new": "class org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory",
+          "annotation": "@org.apache.logging.log4j.core.config.plugins.Plugin(name = \"ThreadContextStackResolverFactory\", category = \"JsonTemplateResolverFactory\")",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.annotation.attributeValueChanged",
+          "old": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories.RecyclerFactoryConverter",
+          "new": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories.RecyclerFactoryConverter",
+          "annotationType": "org.apache.logging.log4j.core.config.plugins.Plugin",
+          "attribute": "name",
+          "oldValue": "\"RecyclerFactory\"",
+          "newValue": "\"RecyclerFactoryConverter\"",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.removed",
+          "old": "class org.apache.logging.log4j.layout.template.json.util.RecyclerFactories.RecyclerFactoryConverter",
+          "justification": "LOG4J2-3004 Add plugin support."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.externalClassExposedInAPI",
+          "new": "missing-class org.apache.logging.log4j.util.IndexedReadOnlyStringMap",
+          "justification": "Used by org.apache.logging.log4j.layout.template.json.util.JsonWriter."
+        },
+        {
+          "ignore": true,
+          "code": "java.missing.newClass",
+          "new": "missing-class org.apache.logging.log4j.util.IndexedReadOnlyStringMap",
+          "justification": "Used by org.apache.logging.log4j.layout.template.json.util.JsonWriter."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.externalClassExposedInAPI",
+          "new": "missing-class org.apache.logging.log4j.util.StringBuilderFormattable",
+          "justification": "Used by org.apache.logging.log4j.layout.template.json.util.JsonWriter."
+        },
+        {
+          "ignore": true,
+          "code": "java.missing.newClass",
+          "new": "missing-class org.apache.logging.log4j.util.StringBuilderFormattable",
+          "justification": "Used by org.apache.logging.log4j.layout.template.json.util.JsonWriter."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.externalClassExposedInAPI",
+          "new": "missing-class org.apache.logging.log4j.util.StringMap",
+          "justification": "Used by org.apache.logging.log4j.layout.template.json.util.JsonWriter."
+        },
+        {
+          "ignore": true,
+          "code": "java.missing.newClass",
+          "new": "missing-class org.apache.logging.log4j.util.StringMap",
+          "justification": "Used by org.apache.logging.log4j.layout.template.json.util.JsonWriter."
+        },
+        {
+          "ignore": true,
+          "code": "java.class.nonPublicPartOfAPI",
+          "new": "interface org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverContext<V, C extends org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverContext<V, C>>",
+          "justification": "LOG4J2-3004 Add plugin support."
+        }
+      ]
+    }
   }
 ]