diff --git a/labels.list b/labels.list
index 006a92bb1..55763ff9a 100644
--- a/labels.list
+++ b/labels.list
@@ -20,6 +20,12 @@
Deprecated, see notes.
+
+ Available in IDE version 2019.2 or later
+
+
+ Available in IDE version 2019.3 or later
+
Available in IDE version 2020.1 or later
diff --git a/topics/basics/plugin_structure/plugin_extensions.md b/topics/basics/plugin_structure/plugin_extensions.md
index d5bb584eb..44f64ed6f 100644
--- a/topics/basics/plugin_structure/plugin_extensions.md
+++ b/topics/basics/plugin_structure/plugin_extensions.md
@@ -55,20 +55,20 @@ and one extension to access the `another.plugin.myExtensionPoint` extension poin
-->
+ implementation="com.example.MyAppStarter"/>
+ implementation="com.example.MyProjectTemplatesFactory"/>
-
+
-
+
```
@@ -106,33 +106,48 @@ If an extension instance needs to "opt out" in certain scenarios, it can throw [
Several tooling features are available to help configure bean class extension points in plugin.xml.
-Properties annotated with [`RequiredElement`](%gh-ic%/platform/core-api/src/com/intellij/openapi/extensions/RequiredElement.java) are inserted automatically and validated (2019.3 and later).
-If the given property is allowed to have an explicit empty value, set `allowEmpty` to `true` (2020.3 and later).
+#### Required Properties
+
-Property names matching the following list will resolve to fully qualified class name:
+Properties annotated with [`RequiredElement`](%gh-ic%/platform/core-api/src/com/intellij/openapi/extensions/RequiredElement.java) are inserted automatically and validated.
+
+If the given property is allowed to have an explicit empty value, set `allowEmpty` to `true` (2020.3+).
+
+#### Class names
+
+Property names matching the following list will resolve to a fully qualified class name:
- `implementation`
- `className`
-- `serviceInterface` / `serviceImplementation`
- ending with `Class` (case-sensitive)
+- `serviceInterface`/`serviceImplementation`
-A required parent type can be specified in the extension point declaration via nested [``](plugin_configuration_file.md#idea-plugin__extensionPoints__extensionPoint__with):
+A required parent type can be specified in the [extension point declaration](plugin_extension_points.md) via [``](plugin_configuration_file.md#idea-plugin__extensionPoints__extensionPoint__with):
```xml
-
+
```
-Property name `language` (or ending in `*Language`, 2020.2+) resolves to all present `Language` IDs.
+#### Custom resolve
-Similarly, `action`/`actionId` (2024.3+) resolves to all registered [``](plugin_configuration_file.md#idea-plugin__actions__action) IDs.
+Property name `language` (or ending in `*Language`, 2020.2+) resolves to all present [`Language`](%gh-ic%/platform/core-api/src/com/intellij/lang/Language.java) IDs.
-Annotating with [`@Nls`](%gh-java-annotations%/common/src/main/java/org/jetbrains/annotations/Nls.java) validates a UI `String` capitalization according to the text property `Capitalization` enum value (2019.2 and later).
+Similarly, `action` and `actionId` (2024.3+) resolve to all registered [``](plugin_configuration_file.md#idea-plugin__actions__action) IDs.
+
+#### Deprecation/ApiStatus
Properties marked as `@Deprecated` or annotated with any of [`ApiStatus`](%gh-java-annotations%/common/src/main/java/org/jetbrains/annotations/ApiStatus.java) `@Internal`, `@Experimental`, `@ScheduledForRemoval`, or `@Obsolete` will be highlighted accordingly.
-Attributes with `Enum` type support code insight with _lowerCamelCased_ notation (2020.1 and later). Note: these must not override `toString()`.
+#### Enum properties
+
+
+Attributes with `Enum` type support code insight with _lowerCamelCased_ notation. Note: Enum implementation must not override `toString()`.
+
+#### I18n
+
+
+Annotating with [`@Nls`](%gh-java-annotations%/common/src/main/java/org/jetbrains/annotations/Nls.java) validates a UI `String` capitalization according to the text property `Capitalization` enum value.