diff --git a/docs/_config.yml b/docs/_config.yml
index e10f4fc399..e4158f6227 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -1,9 +1,9 @@
repository: pmd/pmd
pmd:
- version: 6.23.0-SNAPSHOT
+ version: 6.23.0
previous_version: 6.22.0
- date: ??-??-2020
+ date: 24-April-2020
release_type: minor
# release types: major, minor, bugfix
diff --git a/docs/pages/next_major_development.md b/docs/pages/next_major_development.md
index 1715aa3568..4ac571ae0c 100644
--- a/docs/pages/next_major_development.md
+++ b/docs/pages/next_major_development.md
@@ -73,6 +73,94 @@ the breaking API changes will be performed in 7.0.0.
an API is tagged as `@Deprecated` or not in the latest minor release. During the development of 7.0.0,
we may decide to remove some APIs that were not tagged as deprecated, though we'll try to avoid it." %}
+#### 6.23.0
+
+##### Deprecated APIs
+
+###### Internal API
+
+Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
+You can identify them with the `@InternalApi` annotation. You'll also get a deprecation warning.
+
+* {% jdoc core::lang.rule.xpath.AbstractXPathRuleQuery %}
+* {% jdoc core::lang.rule.xpath.JaxenXPathRuleQuery %}
+* {% jdoc core::lang.rule.xpath.SaxonXPathRuleQuery %}
+* {% jdoc core::lang.rule.xpath.XPathRuleQuery %}
+
+###### In ASTs
+
+As part of the changes we'd like to do to AST classes for 7.0.0, we would like to
+hide some methods and constructors that rule writers should not have access to.
+The following usages are now deprecated in the **Apex**, **Javascript**, **PL/SQL**, **Scala** and **Visualforce** ASTs:
+
+* Manual instantiation of nodes. **Constructors of node classes are deprecated** and
+ marked {% jdoc core::annotation.InternalApi %}. Nodes should only be obtained from the parser,
+ which for rules, means that they never need to instantiate node themselves.
+ Those constructors will be made package private with 7.0.0.
+* **Subclassing of abstract node classes, or usage of their type**. The base classes are internal API
+ and will be hidden in version 7.0.0. You should not couple your code to them.
+ * In the meantime you should use interfaces like {% jdoc visualforce::lang.vf.ast.VfNode %} or
+ {% jdoc core::lang.ast.Node %}, or the other published interfaces in this package,
+ to refer to nodes generically.
+ * Concrete node classes will **be made final** with 7.0.0.
+* Setters found in any node class or interface. **Rules should consider the AST immutable**.
+ We will make those setters package private with 7.0.0.
+* The implementation classes of {% jdoc core::lang.Parser %} (eg {% jdoc visualforce::lang.vf.VfParser %}) are deprecated and should not be used directly.
+ Use {% jdoc !!core::lang.LanguageVersionHandler#getParser(ParserOptions) %} instead.
+* The implementation classes of {% jdoc core::lang.TokenManager %} (eg {% jdoc visualforce::lang.vf.VfTokenManager %}) are deprecated and should not be used outside of our implementation.
+ **This also affects CPD-only modules**.
+
+These deprecations are added to the following language modules in this release.
+Please look at the package documentation to find out the full list of deprecations.
+* Apex: **{% jdoc_package apex::lang.apex.ast %}**
+* Javascript: **{% jdoc_package javascript::lang.ecmascript.ast %}**
+* PL/SQL: **{% jdoc_package plsql::lang.plsql.ast %}**
+* Scala: **{% jdoc_package scala::lang.scala.ast %}**
+* Visualforce: **{% jdoc_package visualforce::lang.vf.ast %}**
+
+These deprecations have already been rolled out in a previous version for the
+following languages:
+* Java: {% jdoc_package java::lang.java.ast %}
+* Java Server Pages: {% jdoc_package jsp::lang.jsp.ast %}
+* Velocity Template Language: {% jdoc_package vm::lang.vm.ast %}
+
+Outside of these packages, these changes also concern the following TokenManager
+implementations, and their corresponding Parser if it exists (in the same package):
+
+* {% jdoc cpp::lang.cpp.CppTokenManager %}
+* {% jdoc java::lang.java.JavaTokenManager %}
+* {% jdoc javascript::lang.ecmascript5.Ecmascript5TokenManager %}
+* {% jdoc jsp::lang.jsp.JspTokenManager %}
+* {% jdoc matlab::lang.matlab.MatlabTokenManager %}
+* {% jdoc modelica::lang.modelica.ModelicaTokenManager %}
+* {% jdoc objectivec::lang.objectivec.ObjectiveCTokenManager %}
+* {% jdoc plsql::lang.plsql.PLSQLTokenManager %}
+* {% jdoc python::lang.python.PythonTokenManager %}
+* {% jdoc visualforce::lang.vf.VfTokenManager %}
+* {% jdoc vm::lang.vm.VmTokenManager %}
+
+
+In the **Java AST** the following attributes are deprecated and will issue a warning when used in XPath rules:
+
+* {% jdoc !!java::lang.java.ast.ASTAdditiveExpression#getImage() %} - use `getOperator()` instead
+* {% jdoc !!java::lang.java.ast.ASTVariableDeclaratorId#getImage() %} - use `getName()` instead
+* {% jdoc !!java::lang.java.ast.ASTVariableDeclaratorId#getVariableName() %} - use `getName()` instead
+
+###### For removal
+
+* {% jdoc !!core::lang.Parser#getTokenManager(java.lang.String,java.io.Reader) %}
+* {% jdoc !!core::lang.TokenManager#setFileName(java.lang.String) %}
+* {% jdoc !!core::lang.ast.AbstractTokenManager#setFileName(java.lang.String) %}
+* {% jdoc !!core::lang.ast.AbstractTokenManager#getFileName(java.lang.String) %}
+* {% jdoc !!core::cpd.token.AntlrToken#getType() %} - use `getKind()` instead.
+* {% jdoc core::lang.rule.ImmutableLanguage %}
+* {% jdoc core::lang.rule.MockRule %}
+* {% jdoc !!core::lang.ast.Node#getFirstParentOfAnyType(java.lang.Class[]) %}
+* {% jdoc !!core::lang.ast.Node#getAsDocument() %}
+* {% jdoc !!core::lang.ast.AbstractNode#hasDescendantOfAnyType(java.lang.Class[]) %}
+* {% jdoc !!java::lang.java.ast.ASTRecordDeclaration#getComponentList() %}
+* Multiple fields, constructors and methods in {% jdoc core::lang.rule.XPathRule %}. See javadoc for details.
+
#### 6.22.0
##### Deprecated APIs
diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md
index 2f208a0173..71364bd2a8 100644
--- a/docs/pages/release_notes.md
+++ b/docs/pages/release_notes.md
@@ -203,5 +203,10 @@ In the **Java AST** the following attributes are deprecated and will issue a war
* [#2423](https://github.com/pmd/pmd/pull/2423): \[core] Fix Checkstyle OperatorWrap in AbstractTokenizer - [Harsh Kukreja](https://github.com/harsh-kukreja)
* [#2432](https://github.com/pmd/pmd/pull/2432): \[core] Close ZIP data sources even if a runtime exception or error is thrown - [Gonzalo Exequiel Ibars Ingman](https://github.com/gibarsin)
+### Stats
+* 237 commits
+* 64 closed tickets & PRs
+* Days since last release: 42
+
{% endtocmaker %}
diff --git a/pmd-apex/src/main/resources/rulesets/apex/quickstart.xml b/pmd-apex/src/main/resources/rulesets/apex/quickstart.xml
index bb202931c4..c4d0e344ce 100644
--- a/pmd-apex/src/main/resources/rulesets/apex/quickstart.xml
+++ b/pmd-apex/src/main/resources/rulesets/apex/quickstart.xml
@@ -466,6 +466,7 @@
+
@@ -488,4 +489,6 @@
+
+