[*-Editor] Adapt to refactored TextStyleManager
diff --git a/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ext/ui/text/CommentScanner.java b/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ext/ui/text/CommentScanner.java
index 7be609f..8b7c752 100644
--- a/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ext/ui/text/CommentScanner.java
+++ b/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ext/ui/text/CommentScanner.java
@@ -14,6 +14,8 @@
 
 package org.eclipse.statet.base.ext.ui.text;
 
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullLateInit;
+
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -23,10 +25,12 @@
 import org.eclipse.jface.text.rules.IWordDetector;
 import org.eclipse.jface.text.rules.WordRule;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 import org.eclipse.statet.ecommons.text.ui.presentation.AbstractRuleBasedScanner;
 import org.eclipse.statet.ecommons.text.ui.presentation.ITextPresentationConstants;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.presentation.TextStyleManager;
 import org.eclipse.statet.ecommons.ui.ISettingsChangedHandler;
 
 import org.eclipse.statet.base.core.preferences.TaskTagsPreferences;
@@ -35,6 +39,7 @@
 /**
  * Scanner for comments. Provides support for task tags.
  */
+@NonNullByDefault
 public class CommentScanner extends AbstractRuleBasedScanner implements ISettingsChangedHandler {
 	
 	
@@ -72,7 +77,7 @@
 	}
 	
 	
-	private TaskTagRule taskTagRule;
+	private TaskTagRule taskTagRule= nonNullLateInit();
 	
 	private final String commentTokenKey;
 	private final String taskTokenKey;
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsolePreviewSourceViewerConfiguration.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsolePreviewSourceViewerConfiguration.java
index 01894e7..f6a0653 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsolePreviewSourceViewerConfiguration.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsolePreviewSourceViewerConfiguration.java
@@ -23,7 +23,7 @@
 import org.eclipse.statet.ecommons.text.core.sections.BasicDocContentSections;
 import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 import org.eclipse.statet.ecommons.text.ui.presentation.SingleTokenScanner;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.settings.PreferenceStoreTextStyleManager;
 
 import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfiguration;
 
@@ -46,7 +46,7 @@
 	
 	
 	public ConsolePreviewSourceViewerConfiguration(final int flags,
-			final IPreferenceStore preferenceStore, final TextStyleManager textStyles) {
+			final IPreferenceStore preferenceStore, final PreferenceStoreTextStyleManager textStyles) {
 		super(CONTENT_INFO, flags, null);
 		
 		setup(preferenceStore, null, null);
@@ -61,7 +61,7 @@
 	
 	@Override
 	protected void initScanners() {
-		final TextStyleManager textStyles= getTextStyles();
+		final var textStyles= getTextStyles();
 		
 		for (final String contentType : getConfiguredContentTypes(null)) {
 			addScanner(contentType,
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsoleTextStylesPreferencePage.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsoleTextStylesPreferencePage.java
index d8818f9..013d4e8 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsoleTextStylesPreferencePage.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsoleTextStylesPreferencePage.java
@@ -26,7 +26,7 @@
 import org.eclipse.statet.ecommons.preferences.ui.ScopedPreferenceStore;
 import org.eclipse.statet.ecommons.text.PartitionerDocumentSetupParticipant;
 import org.eclipse.statet.ecommons.text.ui.presentation.AbstractTextStylesConfigurationBlock;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.settings.PreferenceStoreTextStyleManager;
 
 import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfiguration;
 import org.eclipse.statet.ltk.ui.util.CombinedPreferenceStore;
@@ -127,7 +127,7 @@
 	
 	@Override
 	protected SourceEditorViewerConfiguration getSourceEditorViewerConfiguration(
-			final IPreferenceStore preferenceStore, final TextStyleManager textStyles) {
+			final IPreferenceStore preferenceStore, final PreferenceStoreTextStyleManager textStyles) {
 		return new ConsolePreviewSourceViewerConfiguration(0,
 				CombinedPreferenceStore.createStore(
 						preferenceStore,
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RIdentifierGroups.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RIdentifierGroups.java
index 9ad4097..cfec381 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RIdentifierGroups.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RIdentifierGroups.java
@@ -14,9 +14,13 @@
 
 package org.eclipse.statet.internal.r.ui;
 
-import java.util.Arrays;
 import java.util.Map;
 
+import org.eclipse.statet.jcommons.collections.ImCollections;
+import org.eclipse.statet.jcommons.collections.ImList;
+import org.eclipse.statet.jcommons.lang.NonNull;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
 import org.eclipse.statet.ecommons.preferences.AbstractPreferencesModelObject;
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.StringArrayPref;
@@ -30,17 +34,18 @@
 /**
  * 
  */
+@NonNullByDefault
 public class RIdentifierGroups extends AbstractPreferencesModelObject {
 	
 	
-	public final static String GROUP_ID = "r.editor/identifiergroups"; //$NON-NLS-1$
+	public final static String GROUP_ID= "r.editor/identifiergroups"; //$NON-NLS-1$
 	
 	
-	private String[] fIdentifiersItemsAssignment;
-	private String[] fIdentifiersItemsLogical;
-	private String[] fIdentifiersItemsFlowcontrol;
-	private String[] fIdentifiersItemsCustom1;
-	private String[] fIdentifiersItemsCustom2;
+	private ImList<String> identifiersItemsAssignment= ImCollections.emptyList();
+	private ImList<String> identifiersItemsLogical= ImCollections.emptyList();
+	private ImList<String> identifiersItemsFlowcontrol= ImCollections.emptyList();
+	private ImList<String> identifiersItemsCustom1= ImCollections.emptyList();
+	private ImList<String> identifiersItemsCustom2= ImCollections.emptyList();
 	
 	
 	public RIdentifierGroups() {
@@ -58,17 +63,22 @@
 	
 	@Override
 	public void load(final PreferenceAccess prefs) {
-		final RSymbolComparator comparator = new RSymbolComparator();
-		fIdentifiersItemsAssignment = loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_ASSIGNMENT_ITEMS);
-		Arrays.sort(fIdentifiersItemsAssignment, comparator);
-		fIdentifiersItemsLogical = loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_LOGICAL_ITEMS);
-		Arrays.sort(fIdentifiersItemsLogical, comparator);
-		fIdentifiersItemsFlowcontrol = loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_FLOWCONTROL_ITEMS);
-		Arrays.sort(fIdentifiersItemsFlowcontrol, comparator);
-		fIdentifiersItemsCustom1 = loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_CUSTOM1_ITEMS);
-		Arrays.sort(fIdentifiersItemsCustom1, comparator);
-		fIdentifiersItemsCustom2 = loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_CUSTOM2_ITEMS);
-		Arrays.sort(fIdentifiersItemsCustom2, comparator);
+		final RSymbolComparator comparator= new RSymbolComparator();
+		this.identifiersItemsAssignment= ImCollections.newList(
+				loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_ASSIGNMENT_ITEMS),
+				comparator );
+		this.identifiersItemsLogical= ImCollections.newList(
+				loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_LOGICAL_ITEMS),
+				comparator );
+		this.identifiersItemsFlowcontrol= ImCollections.newList(
+				loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_FLOWCONTROL_ITEMS),
+				comparator );
+		this.identifiersItemsCustom1= ImCollections.newList(
+				loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_CUSTOM1_ITEMS),
+				comparator );
+		this.identifiersItemsCustom2= ImCollections.newList(
+				loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_CUSTOM2_ITEMS),
+				comparator );
 	}
 	
 	@Override
@@ -76,30 +86,30 @@
 		return map;
 	}
 	
-	private final String[] loadValues(final PreferenceAccess prefs, final String key) {
-		final Preference<String[]> pref = new StringArrayPref(RUI.BUNDLE_ID, key);
+	private final @NonNull String[] loadValues(final PreferenceAccess prefs, final String key) {
+		final Preference<String[]> pref= new StringArrayPref(RUI.BUNDLE_ID, key);
 		return prefs.getPreferenceValue(pref);
 	}
 	
 	
-	public String[] getAssignmentIdentifiers() {
-		return fIdentifiersItemsAssignment;
+	public ImList<String> getAssignmentIdentifiers() {
+		return this.identifiersItemsAssignment;
 	}
 	
-	public String[] getLogicalIdentifiers() {
-		return fIdentifiersItemsLogical;
+	public ImList<String> getLogicalIdentifiers() {
+		return this.identifiersItemsLogical;
 	}
 	
-	public String[] getFlowcontrolIdentifiers() {
-		return fIdentifiersItemsFlowcontrol;
+	public ImList<String> getFlowcontrolIdentifiers() {
+		return this.identifiersItemsFlowcontrol;
 	}
 	
-	public String[] getCustom1Identifiers() {
-		return fIdentifiersItemsCustom1;
+	public ImList<String> getCustom1Identifiers() {
+		return this.identifiersItemsCustom1;
 	}
 	
-	public String[] getCustom2Identifiers() {
-		return fIdentifiersItemsCustom2;
+	public ImList<String> getCustom2Identifiers() {
+		return this.identifiersItemsCustom2;
 	}
 	
 }
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPlugin.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPlugin.java
index 79c4025..2aea5f5 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPlugin.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPlugin.java
@@ -46,7 +46,8 @@
 import org.eclipse.statet.ecommons.preferences.PreferencesUtil;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.settings.JFaceTextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.settings.PreferenceStoreTextStyleManager;
 import org.eclipse.statet.ecommons.ui.util.ImageDescriptorRegistry;
 import org.eclipse.statet.ecommons.ui.util.ImageRegistryUtil;
 
@@ -145,8 +146,8 @@
 	private RFragmentDocumentProvider rFragmentDocumentProvider;
 	private RdDocumentProvider rdDocumentProvider;
 	
-	private TextStyleManager rTextStyles;
-	private TextStyleManager rdTextStyles;
+	private PreferenceStoreTextStyleManager rTextStyles;
+	private PreferenceStoreTextStyleManager rdTextStyles;
 	
 	private RIdentifierGroups identifierGroups;
 	private REditorOptions editorSettings;
@@ -388,24 +389,24 @@
 		return null;
 	}
 	
-	public synchronized TextStyleManager getRTextStyles() {
+	public synchronized PreferenceStoreTextStyleManager getRTextStyles() {
 		if (this.rTextStyles == null) {
 			if (!this.started) {
 				throw new IllegalStateException("Plug-in is not started.");
 			}
-			this.rTextStyles= new TextStyleManager(getPreferenceStore(),
+			this.rTextStyles= new JFaceTextStyleManager(getPreferenceStore(),
 					RUIPreferenceConstants.R.TS_GROUP_ID );
 			PreferencesUtil.getSettingsChangeNotifier().addManageListener(this.rTextStyles);
 		}
 		return this.rTextStyles;
 	}
 	
-	public synchronized TextStyleManager getRdTextStyles() {
+	public synchronized PreferenceStoreTextStyleManager getRdTextStyles() {
 		if (this.rdTextStyles == null) {
 			if (!this.started) {
 				throw new IllegalStateException("Plug-in is not started.");
 			}
-			this.rdTextStyles= new TextStyleManager(getPreferenceStore(),
+			this.rdTextStyles= new JFaceTextStyleManager(getPreferenceStore(),
 					RUIPreferenceConstants.Rd.TS_GROUP_ID );
 			PreferencesUtil.getSettingsChangeNotifier().addManageListener(this.rdTextStyles);
 		}
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RTextStylesPreferencePage.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RTextStylesPreferencePage.java
index 266ac0c..a776e0d 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RTextStylesPreferencePage.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RTextStylesPreferencePage.java
@@ -29,7 +29,7 @@
 import org.eclipse.statet.ecommons.preferences.ui.ConfigurationBlock;
 import org.eclipse.statet.ecommons.preferences.ui.ConfigurationBlockPreferencePage;
 import org.eclipse.statet.ecommons.text.ui.presentation.AbstractTextStylesConfigurationBlock;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.settings.PreferenceStoreTextStyleManager;
 
 import org.eclipse.statet.internal.r.ui.RUIPlugin;
 import org.eclipse.statet.ltk.ui.LtkUIPreferences;
@@ -246,7 +246,7 @@
 	
 	@Override
 	protected SourceEditorViewerConfiguration getSourceEditorViewerConfiguration(
-			final IPreferenceStore preferenceStore, final TextStyleManager textStyles) {
+			final IPreferenceStore preferenceStore, final PreferenceStoreTextStyleManager textStyles) {
 		return new RSourceViewerConfiguration(RDocumentContentInfo.INSTANCE, 0,
 				null,
 				RCore.getDefaultsAccess(),
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RdSyntaxColoringPreferencePage.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RdSyntaxColoringPreferencePage.java
index 0b95e2e..fa26d30 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RdSyntaxColoringPreferencePage.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RdSyntaxColoringPreferencePage.java
@@ -21,7 +21,7 @@
 import org.eclipse.statet.ecommons.preferences.ui.ConfigurationBlock;
 import org.eclipse.statet.ecommons.preferences.ui.ConfigurationBlockPreferencePage;
 import org.eclipse.statet.ecommons.text.ui.presentation.AbstractTextStylesConfigurationBlock;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.settings.PreferenceStoreTextStyleManager;
 
 import org.eclipse.statet.internal.r.ui.RUIPlugin;
 import org.eclipse.statet.ltk.ui.LtkUIPreferences;
@@ -122,7 +122,7 @@
 	
 	@Override
 	protected SourceEditorViewerConfiguration getSourceEditorViewerConfiguration(
-			final IPreferenceStore preferenceStore, final TextStyleManager textStyles) {
+			final IPreferenceStore preferenceStore, final PreferenceStoreTextStyleManager textStyles) {
 		return new RdSourceViewerConfiguration(0, null, RCore.getDefaultsAccess(),
 				CombinedPreferenceStore.createStore(
 						preferenceStore,
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpRCodeScanner.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpRCodeScanner.java
index 1234766..6bbcbc5 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpRCodeScanner.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpRCodeScanner.java
@@ -19,6 +19,7 @@
 
 import org.eclipse.jface.preference.IPreferenceStore;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.text.core.util.HtmlStripParserInput;
 
 import org.eclipse.statet.ecommons.text.ui.settings.CssTextStyleManager;
@@ -27,6 +28,7 @@
 import org.eclipse.statet.r.ui.text.r.RDefaultTextStyleScanner;
 
 
+@NonNullByDefault
 public class RHelpRCodeScanner extends RDefaultTextStyleScanner {
 	
 	
@@ -41,12 +43,12 @@
 	}
 	
 	public String getDefaultStyle() {
-		return (String) getTextStyles().getToken(null).getData();
+		return (String)getTextStyles().getToken(null).getData();
 	}
 	
 	@Override
 	public void handleSettingsChanged(final Set<String> groupIds, final Map<String, Object> options) {
-		getTextStyles().handleSettingsChanged(groupIds, options);
+		((CssTextStyleManager)getTextStyles()).handleSettingsChanged(groupIds, options);
 		super.handleSettingsChanged(groupIds, options);
 	}
 	
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/editors/RdSourceViewerConfiguration.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/editors/RdSourceViewerConfiguration.java
index 452a399..12620f0 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/editors/RdSourceViewerConfiguration.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/editors/RdSourceViewerConfiguration.java
@@ -28,7 +28,7 @@
 import org.eclipse.statet.ecommons.text.ICharPairMatcher;
 import org.eclipse.statet.ecommons.text.PairMatcher;
 import org.eclipse.statet.ecommons.text.ui.presentation.SingleTokenScanner;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.settings.PreferenceStoreTextStyleManager;
 import org.eclipse.statet.ecommons.ui.ISettingsChangedHandler;
 
 import org.eclipse.statet.base.ext.ui.text.CommentScanner;
@@ -70,7 +70,7 @@
 	public RdSourceViewerConfiguration(final int flags,
 			final SourceEditor sourceEditor,
 			final RCoreAccess access,
-			final IPreferenceStore preferenceStore, final TextStyleManager textStyles) {
+			final IPreferenceStore preferenceStore, final PreferenceStoreTextStyleManager textStyles) {
 		super(RdDocumentContentInfo.INSTANCE, flags, sourceEditor);
 		setCoreAccess(access);
 		
@@ -93,7 +93,7 @@
 	
 	@Override
 	protected void initScanners() {
-		final TextStyleManager textStyles= getTextStyles();
+		final var textStyles= getTextStyles();
 		
 		addScanner(RDocumentConstants.RDOC_DEFAULT_CONTENT_TYPE,
 				new RdCodeScanner(textStyles) );
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RSourceViewerConfiguration.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RSourceViewerConfiguration.java
index 96ea7f2..50df850 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RSourceViewerConfiguration.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RSourceViewerConfiguration.java
@@ -37,7 +37,7 @@
 import org.eclipse.statet.ecommons.text.IIndentSettings;
 import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 import org.eclipse.statet.ecommons.text.ui.presentation.SingleTokenScanner;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.settings.PreferenceStoreTextStyleManager;
 import org.eclipse.statet.ecommons.ui.ISettingsChangedHandler;
 
 import org.eclipse.statet.base.ext.ui.text.CommentScanner;
@@ -100,7 +100,7 @@
 	public RSourceViewerConfiguration(final DocContentSections documentContentInfo, final int flags,
 			final RSourceEditor sourceEditor,
 			final RCoreAccess access,
-			final IPreferenceStore preferenceStore, final TextStyleManager textStyles) {
+			final IPreferenceStore preferenceStore, final PreferenceStoreTextStyleManager textStyles) {
 		super(documentContentInfo, flags, sourceEditor);
 		setCoreAccess(access);
 		setup((preferenceStore != null) ? preferenceStore : RUIPlugin.getInstance().getEditorPreferenceStore(),
@@ -127,7 +127,7 @@
 	
 	@Override
 	protected void initScanners() {
-		final TextStyleManager textStyles= getTextStyles();
+		final var textStyles= getTextStyles();
 		
 		addScanner(RDocumentConstants.R_DEFAULT_CONTENT_TYPE,
 				new RDefaultTextStyleScanner(textStyles) );
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RDefaultTextStyleScanner.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RDefaultTextStyleScanner.java
index c0ac619..6c1c51f 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RDefaultTextStyleScanner.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RDefaultTextStyleScanner.java
@@ -14,6 +14,8 @@
 
 package org.eclipse.statet.r.ui.text.r;
 
+import static org.eclipse.statet.jcommons.collections.CollectionUtils.putAll;
+
 import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.Map;
@@ -24,11 +26,12 @@
 import org.eclipse.jface.text.rules.ITokenScanner;
 import org.eclipse.jface.text.rules.Token;
 
-import org.eclipse.statet.jcommons.collections.ImList;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
 
 import org.eclipse.statet.ecommons.text.core.input.DocumentParserInput;
 import org.eclipse.statet.ecommons.text.ui.presentation.ITextPresentationConstants;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.presentation.TextStyleManager;
 import org.eclipse.statet.ecommons.ui.ISettingsChangedHandler;
 
 import org.eclipse.statet.internal.r.ui.RIdentifierGroups;
@@ -41,27 +44,14 @@
  * Text token scanner for R code.
  * Mainly for R default partitions, but also works for other partitions (without special styles).
  * 
- * Version 2 uses RLexer instead of rules to parse the sources.
+ * The implementation uses RLexer instead of rules to parse the sources.
  */
+@NonNullByDefault
 public class RDefaultTextStyleScanner extends DocumentParserInput implements ITokenScanner, ISettingsChangedHandler {
 	
 	
-	protected static void putAll(final Map<String, IToken> map, final String[] symbols, final IToken token) {
-		for (int i= 0; i < symbols.length; i++) {
-			map.put(symbols[i], token);
-		}
-	}
-	
-	protected static void putAll(final Map<RTerminal, IToken> map, final ImList<RTerminal> types,
-			final IToken token) {
-		for (final RTerminal terminal : types) {
-			map.put(terminal, token);
-		}
-	}
-	
-	
 	private final RLexer lexer;
-	private RTerminal lexerToken;
+	private @Nullable RTerminal lexerToken;
 	
 	private final EnumMap<RTerminal, IToken> tokens;
 	private final IToken defaultToken;
@@ -140,7 +130,7 @@
 	}
 	
 	protected IToken getTokenFromScannerToken() {
-		IToken token;
+		@Nullable IToken token;
 		if (this.lexerToken == RTerminal.SYMBOL) {
 			final String text= this.lexer.getText();
 			if (text != null) {
@@ -187,26 +177,44 @@
 	protected void registerTokens(final EnumMap<RTerminal,IToken> map) {
 		map.put(RTerminal.EOF, Token.EOF);
 		
-		putAll(map, IRTextTokens.FLOWCONTROL, getToken(IRTextTokens.FLOWCONTROL_KEY));
-		putAll(map, IRTextTokens.GROUPING, getToken(IRTextTokens.GROUPING_KEY));
-		putAll(map, IRTextTokens.SEPARATOR, getToken(IRTextTokens.SEPARATOR_KEY));
-		putAll(map, IRTextTokens.ASSIGN, getToken(IRTextTokens.ASSIGN_KEY));
-		putAll(map, IRTextTokens.ASSIGN_SUB_EQUAL, getToken(IRTextTokens.ASSIGN_SUB_EQUAL_KEY));
-		putAll(map, IRTextTokens.ASSIGN_SUB_PIPE, getToken(IRTextTokens.ASSIGN_SUB_PIPE_KEY));
-		putAll(map, IRTextTokens.OP, getToken(IRTextTokens.OP_KEY));
-		putAll(map, IRTextTokens.OP_SUB_LOGICAL, getToken(IRTextTokens.OP_SUB_LOGICAL_KEY));
-		putAll(map, IRTextTokens.OP_SUB_RELATIONAL, getToken(IRTextTokens.OP_SUB_RELATIONAL_KEY));
-		putAll(map, IRTextTokens.SUBACCESS, getToken(IRTextTokens.SUBACCESS_KEY));
-		putAll(map, IRTextTokens.NSGET, getToken(IRTextTokens.SUBACCESS_KEY));
+		putAll(map, IRTextTokens.FLOWCONTROL,
+				getToken(IRTextTokens.FLOWCONTROL_KEY) );
+		putAll(map, IRTextTokens.GROUPING,
+				getToken(IRTextTokens.GROUPING_KEY) );
+		putAll(map, IRTextTokens.SEPARATOR,
+				getToken(IRTextTokens.SEPARATOR_KEY) );
+		putAll(map, IRTextTokens.ASSIGN,
+				getToken(IRTextTokens.ASSIGN_KEY) );
+		putAll(map, IRTextTokens.ASSIGN_SUB_EQUAL,
+				getToken(IRTextTokens.ASSIGN_SUB_EQUAL_KEY) );
+		putAll(map, IRTextTokens.ASSIGN_SUB_PIPE,
+				getToken(IRTextTokens.ASSIGN_SUB_PIPE_KEY) );
+		putAll(map, IRTextTokens.OP,
+				getToken(IRTextTokens.OP_KEY) );
+		putAll(map, IRTextTokens.OP_SUB_LOGICAL,
+				getToken(IRTextTokens.OP_SUB_LOGICAL_KEY) );
+		putAll(map, IRTextTokens.OP_SUB_RELATIONAL,
+				getToken(IRTextTokens.OP_SUB_RELATIONAL_KEY) );
+		putAll(map, IRTextTokens.SUBACCESS,
+				getToken(IRTextTokens.SUBACCESS_KEY) );
+		putAll(map, IRTextTokens.NSGET,
+				getToken(IRTextTokens.SUBACCESS_KEY) );
 		
-		putAll(map, IRTextTokens.SPECIALCONST, getToken(IRTextTokens.SPECIALCONST_KEY));
-		putAll(map, IRTextTokens.LOGICALCONST, getToken(IRTextTokens.LOGICALCONST_KEY));
-		putAll(map, IRTextTokens.SYMBOL, getToken(IRTextTokens.SYMBOL_KEY));
+		putAll(map, IRTextTokens.SPECIALCONST,
+				getToken(IRTextTokens.SPECIALCONST_KEY) );
+		putAll(map, IRTextTokens.LOGICALCONST,
+				getToken(IRTextTokens.LOGICALCONST_KEY) );
+		putAll(map, IRTextTokens.SYMBOL,
+				getToken(IRTextTokens.SYMBOL_KEY) );
 		
-		putAll(map, IRTextTokens.NUM, getToken(IRTextTokens.NUM_KEY));
-		putAll(map, IRTextTokens.NUM_SUB_INT, getToken(IRTextTokens.NUM_SUB_INT_KEY));
-		putAll(map, IRTextTokens.NUM_SUB_CPLX, getToken(IRTextTokens.NUM_SUB_CPLX_KEY));
-		putAll(map, IRTextTokens.UNDEFINED, getToken(IRTextTokens.UNDEFINED_KEY));
+		putAll(map, IRTextTokens.NUM,
+				getToken(IRTextTokens.NUM_KEY) );
+		putAll(map, IRTextTokens.NUM_SUB_INT,
+				getToken(IRTextTokens.NUM_SUB_INT_KEY) );
+		putAll(map, IRTextTokens.NUM_SUB_CPLX,
+				getToken(IRTextTokens.NUM_SUB_CPLX_KEY) );
+		putAll(map, IRTextTokens.UNDEFINED,
+				getToken(IRTextTokens.UNDEFINED_KEY) );
 		
 		// usually not in default partition
 		putAll(map, IRTextTokens.STRING, getToken(IRTextTokens.STRING_KEY));
@@ -220,15 +228,15 @@
 		groups.getReadLock().lock();
 		try {
 			putAll(map, groups.getAssignmentIdentifiers(),
-					getToken(IRTextTokens.SYMBOL_SUB_ASSIGN_KEY));
+					getToken(IRTextTokens.SYMBOL_SUB_ASSIGN_KEY) );
 			putAll(map, groups.getLogicalIdentifiers(),
-					getToken(IRTextTokens.SYMBOL_SUB_LOGICAL_KEY));
+					getToken(IRTextTokens.SYMBOL_SUB_LOGICAL_KEY) );
 			putAll(map, groups.getFlowcontrolIdentifiers(),
-					getToken(IRTextTokens.SYMBOL_SUB_FLOWCONTROL_KEY));
+					getToken(IRTextTokens.SYMBOL_SUB_FLOWCONTROL_KEY) );
 			putAll(map, groups.getCustom1Identifiers(),
-					getToken(IRTextTokens.SYMBOL_SUB_CUSTOM1_KEY));
+					getToken(IRTextTokens.SYMBOL_SUB_CUSTOM1_KEY) );
 			putAll(map, groups.getCustom2Identifiers(),
-					getToken(IRTextTokens.SYMBOL_SUB_CUSTOM2_KEY));
+					getToken(IRTextTokens.SYMBOL_SUB_CUSTOM2_KEY) );
 		}
 		finally {
 			groups.getReadLock().unlock();
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RInfixOperatorScanner.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RInfixOperatorScanner.java
index f120662..02cb1b1 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RInfixOperatorScanner.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RInfixOperatorScanner.java
@@ -19,13 +19,16 @@
 import org.eclipse.jface.text.rules.IRule;
 import org.eclipse.jface.text.rules.IToken;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
 import org.eclipse.statet.ecommons.text.ui.presentation.AbstractRuleBasedScanner;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.presentation.TextStyleManager;
 
 
 /**
  * Scanner for infix-operators.
  */
+@NonNullByDefault
 public class RInfixOperatorScanner extends AbstractRuleBasedScanner {
 	
 	
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RoxygenScanner.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RoxygenScanner.java
index 80ed8a9..7032f0a 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RoxygenScanner.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/r/RoxygenScanner.java
@@ -22,8 +22,10 @@
 import org.eclipse.jface.text.rules.IToken;
 import org.eclipse.jface.text.rules.Token;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.presentation.TextStyleManager;
 
 import org.eclipse.statet.base.ext.ui.text.CommentScanner;
 
@@ -31,22 +33,23 @@
 /**
  * Scanner for Roxygen comments.
  */
+@NonNullByDefault
 public class RoxygenScanner extends CommentScanner {
 	
 	
 	private static class RoxygenTagRule implements IPredicateRule {
 		
-		private final IToken fTagToken;
-		private final IToken fDefaultToken;
+		private final IToken tagToken;
+		private final IToken defaultToken;
 		
 		public RoxygenTagRule(final IToken tagToken, final IToken defaultToken) {
-			fTagToken = tagToken;
-			fDefaultToken = defaultToken;
+			this.tagToken = tagToken;
+			this.defaultToken = defaultToken;
 		}
 		
 		@Override
 		public IToken getSuccessToken() {
-			return fTagToken;
+			return this.tagToken;
 		}
 		
 		@Override
@@ -67,7 +70,7 @@
 				}
 				c = scanner.read();
 				if (c == '@') {
-					return fDefaultToken;
+					return this.defaultToken;
 				}
 			}
 			else {
@@ -80,7 +83,7 @@
 				}
 				c = scanner.read();
 			}
-			return fTagToken;
+			return this.tagToken;
 		}
 		
 		private boolean isRoxygenTagChar(final int c) {
@@ -103,7 +106,7 @@
 	protected void createRules(final List<IRule> rules) {
 		super.createRules(rules);
 		
-		rules.add(new RoxygenTagRule(getToken(IRTextTokens.ROXYGEN_TAG_KEY), fDefaultReturnToken));
+		rules.add(new RoxygenTagRule(getToken(IRTextTokens.ROXYGEN_TAG_KEY), this.fDefaultReturnToken));
 	}
 	
 }
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/rd/RdCodeScanner.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/rd/RdCodeScanner.java
index d98e7a2..d651ed5 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/rd/RdCodeScanner.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/text/rd/RdCodeScanner.java
@@ -25,7 +25,7 @@
 import org.eclipse.statet.ecommons.text.DefaultWhitespaceDetector;
 import org.eclipse.statet.ecommons.text.core.rules.OperatorRule;
 import org.eclipse.statet.ecommons.text.ui.presentation.AbstractRuleBasedScanner;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.presentation.TextStyleManager;
 
 import org.eclipse.statet.r.core.rdoc.RdTags;
 
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/ui/sourceediting/LtxRweaveSourceViewerConfiguration.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/ui/sourceediting/LtxRweaveSourceViewerConfiguration.java
index efcba5f..a8ed122 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/ui/sourceediting/LtxRweaveSourceViewerConfiguration.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/ui/sourceediting/LtxRweaveSourceViewerConfiguration.java
@@ -35,7 +35,7 @@
 import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartition;
 import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionUtils;
 import org.eclipse.statet.ecommons.text.ui.presentation.SingleTokenScanner;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.presentation.TextStyleManager;
 
 import org.eclipse.statet.docmlet.tex.core.TexCoreAccess;
 import org.eclipse.statet.docmlet.tex.core.source.TexDocumentConstants;
@@ -191,7 +191,7 @@
 	
 	@Override
 	protected void initScanners() {
-		final TextStyleManager textStyles= this.rConfig.getTextStyles();
+		final var textStyles= this.rConfig.getTextStyles();
 		
 		addScanner(TexRweaveDocumentConstants.RCHUNK_BASE_CONTENT_TYPE,
 				new SingleTokenScanner(textStyles, IRTextTokens.UNDEFINED_KEY ));
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/ui/sourceediting/WikidocRweaveSourceViewerConfiguration.java b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/ui/sourceediting/WikidocRweaveSourceViewerConfiguration.java
index eddee00..20950f0 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/ui/sourceediting/WikidocRweaveSourceViewerConfiguration.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/ui/sourceediting/WikidocRweaveSourceViewerConfiguration.java
@@ -36,7 +36,7 @@
 import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartition;
 import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionUtils;
 import org.eclipse.statet.ecommons.text.ui.presentation.SingleTokenScanner;
-import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
+import org.eclipse.statet.ecommons.text.ui.presentation.TextStyleManager;
 
 import org.eclipse.statet.docmlet.tex.ui.sourceediting.LtxSourceViewerConfiguration;
 import org.eclipse.statet.docmlet.wikitext.core.WikitextCoreAccess;
@@ -207,7 +207,7 @@
 	
 	@Override
 	protected void initScanners() {
-		final TextStyleManager textStyles= this.rConfig.getTextStyles();
+		final var textStyles= this.rConfig.getTextStyles();
 		
 		addScanner(WikitextRweaveDocumentConstants.RCHUNK_BASE_CONTENT_TYPE,
 				new SingleTokenScanner(textStyles, IRTextTokens.UNDEFINED_KEY ));