Adapt to revised ecommons.text.core
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 e080765..6c2a762 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
@@ -17,10 +17,8 @@
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.text.source.ISourceViewer;
 
-import org.eclipse.statet.jcommons.collections.ImCollections;
-
-import org.eclipse.statet.ecommons.text.core.sections.AbstractDocContentSections;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+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;
 
@@ -30,8 +28,8 @@
 public class ConsolePreviewSourceViewerConfiguration extends SourceEditorViewerConfiguration {
 	
 	
-	private static final IDocContentSections CONTENT_INFO= new AbstractDocContentSections(ConsoleTextStylesPreviewPartitioner.PARTITIONING,
-			ConsoleTextStylesPreviewPartitioner.PARTITIONING, ImCollections.newList(ConsoleTextStylesPreviewPartitioner.PARTITIONING)) {
+	private static final DocContentSections CONTENT_INFO= new BasicDocContentSections(ConsoleTextStylesPreviewPartitioner.PARTITIONING,
+			ConsoleTextStylesPreviewPartitioner.PARTITIONING) {
 		@Override
 		public String getTypeByPartition(final String contentType) {
 			return ConsoleTextStylesPreviewPartitioner.PARTITIONING;
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/ConsolePageEditor.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/ConsolePageEditor.java
index e9a0070..c612bcc 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/ConsolePageEditor.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/ConsolePageEditor.java
@@ -71,7 +71,7 @@
 import org.eclipse.statet.ecommons.io.FileUtil;
 import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.text.ICharPairMatcher;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 import org.eclipse.statet.ecommons.text.core.util.AbstractFragmentDocument;
 import org.eclipse.statet.ecommons.text.ui.InformationDispatchHandler;
 import org.eclipse.statet.ecommons.text.ui.TextHandlerUtil;
@@ -982,7 +982,7 @@
 	}
 	
 	@Override
-	public IDocContentSections getDocumentContentInfo() {
+	public DocContentSections getDocumentContentInfo() {
 		return this.configurator.getDocumentContentInfo();
 	}
 	
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/page/RConsoleSourceUnit.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/page/RConsoleSourceUnit.java
index 205426e..cf603f0 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/page/RConsoleSourceUnit.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/page/RConsoleSourceUnit.java
@@ -19,7 +19,7 @@
 
 import org.eclipse.core.runtime.IProgressMonitor;
 
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 import org.eclipse.statet.ecommons.text.core.util.AbstractFragmentDocument;
 import org.eclipse.statet.ecommons.text.core.util.TextUtils;
 
@@ -69,7 +69,7 @@
 	}
 	
 	@Override
-	public IDocContentSections getDocumentContentInfo() {
+	public DocContentSections getDocumentContentInfo() {
 		return RDocumentContentInfo.INSTANCE;
 	}
 	
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/RSourceUnit.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/RSourceUnit.java
index b18ee2a..b90071f 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/RSourceUnit.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/RSourceUnit.java
@@ -17,7 +17,7 @@
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.IProgressMonitor;
 
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 
 import org.eclipse.statet.ltk.ast.core.AstInfo;
 import org.eclipse.statet.ltk.model.core.elements.ISourceUnitModelInfo;
@@ -49,7 +49,7 @@
 	}
 	
 	@Override
-	public IDocContentSections getDocumentContentInfo() {
+	public DocContentSections getDocumentContentInfo() {
 		return RDocumentContentInfo.INSTANCE;
 	}
 	
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/RResourceUnit.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/RResourceUnit.java
index fc72b35..0a961ca 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/RResourceUnit.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/RResourceUnit.java
@@ -18,7 +18,7 @@
 
 import org.eclipse.core.resources.IFile;
 
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 
 import org.eclipse.statet.ltk.core.ElementName;
 import org.eclipse.statet.ltk.model.core.impl.AbstractFilePersistenceSourceUnitFactory;
@@ -45,7 +45,7 @@
 				return modelTypeId;
 			}
 			@Override
-			public IDocContentSections getDocumentContentInfo() {
+			public DocContentSections getDocumentContentInfo() {
 				return null;
 			}
 		};
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RChunkHeuristicTokenScanner.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RChunkHeuristicTokenScanner.java
index 22949ef..e6c103a 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RChunkHeuristicTokenScanner.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RChunkHeuristicTokenScanner.java
@@ -21,14 +21,14 @@
 import org.eclipse.statet.jcommons.text.core.TextRegion;
 
 import org.eclipse.statet.ecommons.text.core.PartitionConstraint;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionUtils;
 
 
 public class RChunkHeuristicTokenScanner extends RHeuristicTokenScanner {
 	
 	
-	public RChunkHeuristicTokenScanner(final IDocContentSections documentContentInfo) {
+	public RChunkHeuristicTokenScanner(final DocContentSections documentContentInfo) {
 		super(documentContentInfo);
 	}
 	
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RDocumentContentInfo.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RDocumentContentInfo.java
index 7f6f1ab..6664836 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RDocumentContentInfo.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RDocumentContentInfo.java
@@ -14,23 +14,23 @@
 
 package org.eclipse.statet.r.core.source;
 
-import org.eclipse.statet.jcommons.collections.ImCollections;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
-import org.eclipse.statet.ecommons.text.core.sections.AbstractDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.BasicDocContentSections;
 
 
-public class RDocumentContentInfo extends AbstractDocContentSections {
+@NonNullByDefault
+public class RDocumentContentInfo extends BasicDocContentSections {
 	
 	
-	public static final String R=                              IRDocumentConstants.R_PARTITIONING;
+	public static final String R=                           IRDocumentConstants.R_PARTITIONING;
 	
 	
 	public static final RDocumentContentInfo INSTANCE= new RDocumentContentInfo();
 	
 	
 	public RDocumentContentInfo() {
-		super(IRDocumentConstants.R_PARTITIONING, R,
-				ImCollections.newList(R) );
+		super(IRDocumentConstants.R_PARTITIONING, R);
 	}
 	
 	
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RHeuristicTokenScanner.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RHeuristicTokenScanner.java
index 52e3475..85d489b 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RHeuristicTokenScanner.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RHeuristicTokenScanner.java
@@ -20,7 +20,7 @@
 import org.eclipse.statet.jcommons.lang.Nullable;
 
 import org.eclipse.statet.ecommons.text.BasicHeuristicTokenScanner;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 
 import org.eclipse.statet.r.core.rlang.RTokens;
 
@@ -52,14 +52,14 @@
 		}
 	}
 	
-	public static RHeuristicTokenScanner create(final IDocContentSections documentContentInfo) {
+	public static RHeuristicTokenScanner create(final DocContentSections documentContentInfo) {
 		return (documentContentInfo.getPrimaryType() == IRDocumentConstants.R_PARTITIONING) ?
 				new RHeuristicTokenScanner(documentContentInfo) :
 				new RChunkHeuristicTokenScanner(documentContentInfo);
 	}
 	
 	
-	protected RHeuristicTokenScanner(final IDocContentSections documentContentInfo) {
+	protected RHeuristicTokenScanner(final DocContentSections documentContentInfo) {
 		super(documentContentInfo, IRDocumentConstants.R_DEFAULT_CONTENT_CONSTRAINT);
 	}
 	
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RPartitionNodeScanner.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RPartitionNodeScanner.java
index 92329a6..7f875fd 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RPartitionNodeScanner.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RPartitionNodeScanner.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.r.core.source;
 
-import static org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode.END_UNCLOSED;
+import static org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode.END_UNCLOSED;
 
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
@@ -24,20 +24,20 @@
 
 import org.eclipse.statet.ecommons.text.CharacterScannerReader;
 import org.eclipse.statet.ecommons.text.core.rules.BufferedDocumentScanner;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNodeScan;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNodeScanner;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNodeScan;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNodeScanner;
 
 
 /**
  * This scanner recognizes the comments, platform specif., verbatim-like section
  * (and other/usual Rd code).
  */
-public class RPartitionNodeScanner implements ITreePartitionNodeScanner {
+public class RPartitionNodeScanner implements TreePartitionNodeScanner {
 	
 	
-	public static final @Nullable ITreePartitionNode findRRootNode(@Nullable ITreePartitionNode node) {
-		ITreePartitionNode rNode;
+	public static final @Nullable TreePartitionNode findRRootNode(@Nullable TreePartitionNode node) {
+		TreePartitionNode rNode;
 		while (true) {
 			if (node == null) {
 				return null;
@@ -48,7 +48,7 @@
 			}
 			node= node.getParent();
 		}
-		ITreePartitionNode parentNode;
+		TreePartitionNode parentNode;
 		while ((parentNode= rNode.getParent()) != null
 				&& parentNode.getType() instanceof RPartitionNodeType) {
 			rNode= parentNode;
@@ -82,12 +82,12 @@
 	protected final CharacterScannerReader reader= new CharacterScannerReader(
 			new BufferedDocumentScanner(1024) );
 	
-	private ITreePartitionNodeScan scan;
+	private TreePartitionNodeScan scan;
 	
-	private ITreePartitionNode rootNode;
+	private TreePartitionNode rootNode;
 	
 	/** The current node */
-	private ITreePartitionNode node;
+	private TreePartitionNode node;
 	/** The current node type */
 	private RPartitionNodeType type;
 	/** The last significant characters read. */
@@ -100,7 +100,7 @@
 	
 	
 	@Override
-	public int getRestartOffset(final ITreePartitionNode node, final IDocument document,
+	public int getRestartOffset(final TreePartitionNode node, final IDocument document,
 			final int offset) throws BadLocationException {
 		return offset;
 	}
@@ -111,7 +111,7 @@
 	}
 	
 	@Override
-	public void execute(final ITreePartitionNodeScan scan) {
+	public void execute(final TreePartitionNodeScan scan) {
 		this.scan= scan;
 		
 		this.rootNode= null;
@@ -124,7 +124,7 @@
 		process();
 	}
 	
-	protected final ITreePartitionNodeScan getScan() {
+	protected final TreePartitionNodeScan getScan() {
 		return this.scan;
 	}
 	
@@ -134,7 +134,7 @@
 	}
 	
 	protected void init() {
-		final ITreePartitionNode beginNode= getScan().getBeginNode();
+		final TreePartitionNode beginNode= getScan().getBeginNode();
 		if (beginNode.getType() instanceof RPartitionNodeType) {
 			initNode(beginNode, (RPartitionNodeType) beginNode.getType());
 		}
@@ -145,7 +145,7 @@
 		}
 	}
 	
-	protected final ITreePartitionNode getRootNode() {
+	protected final TreePartitionNode getRootNode() {
 		return this.rootNode;
 	}
 	
@@ -172,7 +172,7 @@
 	}
 	
 	
-	protected final void initNode(final ITreePartitionNode node, final RPartitionNodeType type) {
+	protected final void initNode(final TreePartitionNode node, final RPartitionNodeType type) {
 		if (this.node != null) {
 			throw new IllegalStateException();
 		}
@@ -186,7 +186,7 @@
 		this.type= type;
 	}
 	
-	protected final ITreePartitionNode getNode() {
+	protected final TreePartitionNode getNode() {
 		return this.node;
 	}
 	
@@ -201,7 +201,7 @@
 		this.type= (RPartitionNodeType) this.node.getType();
 	}
 	
-	protected final void exitNodesTo(final ITreePartitionNode stopNode,
+	protected final void exitNodesTo(final TreePartitionNode stopNode,
 			final int offset, final int flags) {
 		while (this.node != stopNode) {
 			exitNode(offset, flags);
@@ -446,7 +446,7 @@
 	}
 	
 	protected void handleEOF(final RPartitionNodeType type) {
-		final ITreePartitionNode rootNode= getRootNode();
+		final TreePartitionNode rootNode= getRootNode();
 		final int offset= this.reader.getOffset();
 		exitNodesTo(rootNode, offset, END_UNCLOSED);
 		this.scan.expand(rootNode, offset, END_UNCLOSED, true);
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RPartitionNodeType.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RPartitionNodeType.java
index c5b232c..336ff0c 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RPartitionNodeType.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RPartitionNodeType.java
@@ -16,11 +16,14 @@
 
 import org.eclipse.jface.text.IDocument;
 
-import org.eclipse.statet.ecommons.text.core.treepartitioner.AbstractPartitionNodeType;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ecommons.text.core.treepartitioner.BasicPartitionNodeType;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode;
 
 
-public abstract class RPartitionNodeType extends AbstractPartitionNodeType {
+@NonNullByDefault
+public abstract class RPartitionNodeType extends BasicPartitionNodeType {
 	
 	
 	public static final RPartitionNodeType DEFAULT_ROOT= new RPartitionNodeType() {
@@ -36,12 +39,12 @@
 		}
 		
 		@Override
-		public boolean prefereAtBegin(final ITreePartitionNode node, final IDocument document) {
+		public boolean prefereAtBegin(final TreePartitionNode node, final IDocument document) {
 			return true;
 		}
 		
 		@Override
-		public boolean prefereAtEnd(final ITreePartitionNode node, final IDocument document) {
+		public boolean prefereAtEnd(final TreePartitionNode node, final IDocument document) {
 			return true;
 		}
 		
@@ -131,7 +134,7 @@
 		
 		
 		@Override
-		public boolean prefereAtEnd(final ITreePartitionNode node, final IDocument document) {
+		public boolean prefereAtEnd(final TreePartitionNode node, final IDocument document) {
 			return true;
 		}
 		
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RdDocumentContentInfo.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RdDocumentContentInfo.java
index 7ff4f57..c121a73 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RdDocumentContentInfo.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/source/RdDocumentContentInfo.java
@@ -14,12 +14,13 @@
 
 package org.eclipse.statet.r.core.source;
 
-import org.eclipse.statet.jcommons.collections.ImCollections;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
-import org.eclipse.statet.ecommons.text.core.sections.AbstractDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.BasicDocContentSections;
 
 
-public class RdDocumentContentInfo extends AbstractDocContentSections {
+@NonNullByDefault
+public class RdDocumentContentInfo extends BasicDocContentSections {
 	
 	
 	public static final String RDOC=                        IRDocumentConstants.RDOC_PARTITIONING;
@@ -29,8 +30,7 @@
 	
 	
 	public RdDocumentContentInfo() {
-		super(IRDocumentConstants.RDOC_PARTITIONING, RDOC,
-				ImCollections.newList(RDOC) );
+		super(IRDocumentConstants.RDOC_PARTITIONING, RDOC);
 	}
 	
 	
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/REditorUriSourceUnit.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/REditorUriSourceUnit.java
index da15de1..3c2c90c 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/REditorUriSourceUnit.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/REditorUriSourceUnit.java
@@ -19,7 +19,7 @@
 import org.eclipse.core.filesystem.IFileStore;
 import org.eclipse.core.runtime.SubMonitor;
 
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 
 import org.eclipse.statet.ltk.core.LTK;
 import org.eclipse.statet.ltk.core.WorkingContext;
@@ -59,7 +59,7 @@
 	}
 	
 	@Override
-	public IDocContentSections getDocumentContentInfo() {
+	public DocContentSections getDocumentContentInfo() {
 		return RDocumentContentInfo.INSTANCE;
 	}
 	
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RFragmentSourceUnit.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RFragmentSourceUnit.java
index 95c61a8..5eee98b 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RFragmentSourceUnit.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RFragmentSourceUnit.java
@@ -18,7 +18,7 @@
 
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 import org.eclipse.statet.ecommons.text.ISourceFragment;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 
 import org.eclipse.statet.ltk.core.LTK;
 import org.eclipse.statet.ltk.core.WorkingContext;
@@ -58,7 +58,7 @@
 	}
 	
 	@Override
-	public IDocContentSections getDocumentContentInfo() {
+	public DocContentSections getDocumentContentInfo() {
 		return RDocumentContentInfo.INSTANCE;
 	}
 	
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/RContextInformationValidator.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/RContextInformationValidator.java
index ce6424c..a246406 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/RContextInformationValidator.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/RContextInformationValidator.java
@@ -30,7 +30,7 @@
 import org.eclipse.statet.jcommons.text.core.input.OffsetStringParserInput;
 
 import org.eclipse.statet.ecommons.text.core.FragmentDocument;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode;
 import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionUtils;
 
 import org.eclipse.statet.ltk.ast.core.AstInfo;
@@ -148,7 +148,7 @@
 		if (this.scannedArgs == null || this.scannedArgsStamp != stamp) {
 			try {
 				FCall.Args args= null;
-				final ITreePartitionNode rRootNode= RPartitionNodeScanner.findRRootNode(
+				final TreePartitionNode rRootNode= RPartitionNodeScanner.findRRootNode(
 						TreePartitionUtils.getNode(document, this.sourceEditor.getDocumentContentInfo().getPartitioning(),
 								docStartOffset, true));
 				if (rRootNode != null) {
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/help/EnrichedRHelpContext.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/help/EnrichedRHelpContext.java
index aedd953..1b31883 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/help/EnrichedRHelpContext.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/help/EnrichedRHelpContext.java
@@ -35,7 +35,7 @@
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.ui.IWorkbenchPart3;
 
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 import org.eclipse.statet.ecommons.ui.util.MessageUtils;
 
 import org.eclipse.statet.internal.r.ui.RUIPlugin;
@@ -86,7 +86,7 @@
 	}
 	
 	private static String getPlaintextFromDocument(final IDocument document,
-			final IDocContentSections contentInfo, final ISelectionProvider selectionProvider)
+			final DocContentSections contentInfo, final ISelectionProvider selectionProvider)
 			throws BadLocationException {
 		final ITextSelection textSelection = (ITextSelection) selectionProvider.getSelection();
 		final RHeuristicTokenScanner scanner= RHeuristicTokenScanner.create(contentInfo);
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RAutoEditStrategy.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RAutoEditStrategy.java
index 727fd12..21233ce 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RAutoEditStrategy.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RAutoEditStrategy.java
@@ -59,7 +59,7 @@
 import org.eclipse.statet.ecommons.text.ITokenScanner;
 import org.eclipse.statet.ecommons.text.IndentUtil;
 import org.eclipse.statet.ecommons.text.TextUtil;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartition;
 import org.eclipse.statet.ecommons.text.ui.BracketLevel.InBracketPosition;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
@@ -136,7 +136,7 @@
 	
 	private final ISourceEditor editor;
 	private final ITextEditorExtension3 editor3;
-	private final IDocContentSections documentContentInfo;
+	private final DocContentSections documentContentInfo;
 	private final SourceViewer viewer;
 	private final RealTypeListener typeListener;
 	
@@ -209,7 +209,7 @@
 		return this.document;
 	}
 	
-	protected final IDocContentSections getDocumentContentInfo() {
+	protected final DocContentSections getDocumentContentInfo() {
 		return this.documentContentInfo;
 	}
 	
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RBracketLevel.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RBracketLevel.java
index 04fd10f..5c0682f 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RBracketLevel.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RBracketLevel.java
@@ -24,7 +24,7 @@
 import org.eclipse.statet.jcommons.collections.ImCollections;
 
 import org.eclipse.statet.ecommons.text.TextUtil;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 import org.eclipse.statet.ecommons.text.ui.BracketLevel;
 
 
@@ -229,7 +229,7 @@
 	
 	
 	public RBracketLevel(final LinkedModeModel model,
-			final IDocument document, final IDocContentSections documentContentInfo,
+			final IDocument document, final DocContentSections documentContentInfo,
 			final InBracketPosition position,
 			final boolean consoleMode, final boolean autoDelete) {
 		this(model, document, documentContentInfo,
@@ -238,7 +238,7 @@
 	}
 	
 	public RBracketLevel(final LinkedModeModel model,
-			final IDocument document, final IDocContentSections documentContentInfo,
+			final IDocument document, final DocContentSections documentContentInfo,
 			final List<LinkedPosition> positions, final int mode) {
 		super(model, document, documentContentInfo, positions, mode);
 	}
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 d20d638..a8b6a59 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
@@ -35,7 +35,7 @@
 import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.text.ICharPairMatcher;
 import org.eclipse.statet.ecommons.text.IIndentSettings;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+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.ui.ColorManager;
@@ -98,7 +98,7 @@
 		this(RDocumentContentInfo.INSTANCE, flags, null, null, store, null);
 	}
 	
-	public RSourceViewerConfiguration(final IDocContentSections documentContentInfo, final int flags,
+	public RSourceViewerConfiguration(final DocContentSections documentContentInfo, final int flags,
 			final IRSourceEditor sourceEditor,
 			final IRCoreAccess access,
 			final IPreferenceStore preferenceStore, final TextStyleManager textStyles) {
diff --git a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/internal/redocs/r/ui/debug/SubmitRChunkDirectLaunchShortcut.java b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/internal/redocs/r/ui/debug/SubmitRChunkDirectLaunchShortcut.java
index f4e1563..d50deb5 100644
--- a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/internal/redocs/r/ui/debug/SubmitRChunkDirectLaunchShortcut.java
+++ b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/internal/redocs/r/ui/debug/SubmitRChunkDirectLaunchShortcut.java
@@ -36,7 +36,7 @@
 import org.eclipse.statet.jcommons.text.core.TextRegion;
 
 import org.eclipse.statet.ecommons.text.TextUtil;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
 import org.eclipse.statet.internal.redocs.r.Messages;
@@ -112,7 +112,7 @@
 						final SourceViewer viewer= sourceEditor.getViewer();
 						if (UIAccess.isOkToUse(viewer)) {
 							data.document= (AbstractDocument) viewer.getDocument();
-							final IDocContentSections docContentInfo= sourceEditor.getDocumentContentInfo();
+							final DocContentSections docContentInfo= sourceEditor.getDocumentContentInfo();
 							if (docContentInfo instanceof DocContentSectionsRweaveExtension) {
 								data.docContentSections= (DocContentSectionsRweaveExtension) docContentInfo;
 							}
diff --git a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/AbstractRChunkPartitionNodeScanner.java b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/AbstractRChunkPartitionNodeScanner.java
index f9d6f06..6d04b30 100644
--- a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/AbstractRChunkPartitionNodeScanner.java
+++ b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/AbstractRChunkPartitionNodeScanner.java
@@ -14,12 +14,12 @@
 
 package org.eclipse.statet.redocs.r.core.source;
 
-import static org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode.END_UNCLOSED;
+import static org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode.END_UNCLOSED;
 
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.rules.ICharacterScanner;
 
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode;
 
 import org.eclipse.statet.r.core.source.RPartitionNodeScanner;
 import org.eclipse.statet.r.core.source.RPartitionNodeType;
@@ -61,12 +61,12 @@
 		}
 		
 		@Override
-		public boolean prefereAtBegin(final ITreePartitionNode node, final IDocument document) {
+		public boolean prefereAtBegin(final TreePartitionNode node, final IDocument document) {
 			return true;
 		}
 		
 		@Override
-		public boolean prefereAtEnd(final ITreePartitionNode node, final IDocument document) {
+		public boolean prefereAtEnd(final TreePartitionNode node, final IDocument document) {
 			return true;
 		}
 		
@@ -85,7 +85,7 @@
 		}
 		
 		@Override
-		public boolean prefereAtBegin(final ITreePartitionNode node, final IDocument document) {
+		public boolean prefereAtBegin(final TreePartitionNode node, final IDocument document) {
 			return true;
 		}
 		
@@ -98,7 +98,7 @@
 	protected static final byte STOP_LINE= 3;
 	
 	
-	private ITreePartitionNode chunkNode;
+	private TreePartitionNode chunkNode;
 	
 	private byte chunkLine;
 	
@@ -113,14 +113,14 @@
 		
 		super.init();
 		
-		final ITreePartitionNode rootNode= getRootNode();
+		final TreePartitionNode rootNode= getRootNode();
 		if (rootNode.getType().getPartitionType() == RweaveDocumentConstants.RCHUNK_BASE_CONTENT_TYPE) {
 			this.chunkNode= rootNode;
 		}
 		this.chunkLine= NONE;
 	}
 	
-	protected final ITreePartitionNode getChunkNode() {
+	protected final TreePartitionNode getChunkNode() {
 		return this.chunkNode;
 	}
 	
@@ -138,7 +138,7 @@
 	
 	@Override
 	protected void handleEOF(final RPartitionNodeType type) {
-		final ITreePartitionNode rootNode= getRootNode();
+		final TreePartitionNode rootNode= getRootNode();
 		final int offset= this.reader.getOffset();
 		exitNodesTo(rootNode, offset, END_UNCLOSED);
 		getScan().expand(rootNode, offset, (this.chunkLine == STOP_LINE) ? 0 : END_UNCLOSED, true);
diff --git a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/DocContentSectionsRweaveExtension.java b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/DocContentSectionsRweaveExtension.java
index e0a6292..73c1802 100644
--- a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/DocContentSectionsRweaveExtension.java
+++ b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/DocContentSectionsRweaveExtension.java
@@ -20,28 +20,32 @@
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IRegion;
 
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode;
 
 
-public interface DocContentSectionsRweaveExtension extends IDocContentSections {
+@NonNullByDefault
+public interface DocContentSectionsRweaveExtension extends DocContentSections {
 	
 	
-	ITreePartitionNode getRChunkRegion(final IDocument document, final int offset)
+	@Nullable TreePartitionNode getRChunkRegion(final IDocument document, final int offset)
 			throws BadLocationException;
 	
-	List<ITreePartitionNode> getRChunkRegions(final IDocument document,
+	List<TreePartitionNode> getRChunkRegions(final IDocument document,
 			final int offset, final int length)
 			throws BadLocationException;
 	
-	IRegion getRChunkContentRegion(final IDocument document, final int offset)
+	@Nullable IRegion getRChunkContentRegion(final IDocument document, final int offset)
 			throws BadLocationException;
 	
-	List<ITreePartitionNode> getRChunkCodeRegions(final IDocument document,
+	List<TreePartitionNode> getRChunkCodeRegions(final IDocument document,
 			final int offset, final int length)
 			throws BadLocationException;
 	
-	ITreePartitionNode getRCodeRegion(final IDocument document, final int offset)
+	@Nullable TreePartitionNode getRCodeRegion(final IDocument document, final int offset)
 			throws BadLocationException;
 	
 }
diff --git a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/RweaveDocSectionTreePartImpl.java b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/RweaveDocSectionTreePartImpl.java
index 1dd7134..13088d6 100644
--- a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/RweaveDocSectionTreePartImpl.java
+++ b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/source/RweaveDocSectionTreePartImpl.java
@@ -22,56 +22,60 @@
 import org.eclipse.jface.text.IRegion;
 import org.eclipse.jface.text.Region;
 
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode;
 import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionUtils;
 
 import org.eclipse.statet.r.core.source.IRDocumentConstants;
 
 
+@NonNullByDefault
 public class RweaveDocSectionTreePartImpl {
 	
 	
-	private final IDocContentSections sections;
+	private final DocContentSections sections;
 	
 	
-	public RweaveDocSectionTreePartImpl(final IDocContentSections sections) {
+	public RweaveDocSectionTreePartImpl(final DocContentSections sections) {
 		this.sections= sections;
 	}
 	
 	
-	public IDocContentSections getSections() {
+	public DocContentSections getSections() {
 		return this.sections;
 	}
 	
-	public ITreePartitionNode getRChunkRegion(final IDocument document, final int offset)
+	public @Nullable TreePartitionNode getRChunkRegion(final IDocument document, final int offset)
 			throws BadLocationException {
 		return TreePartitionUtils.searchNode(document, this.sections.getPartitioning(), offset, false,
 				RweaveDocumentConstants.RCHUNK_BASE_CONTENT_TYPE );
 	}
 	
-	public List<ITreePartitionNode> getRChunkRegions(final IDocument document,
+	public List<TreePartitionNode> getRChunkRegions(final IDocument document,
 			final int offset, final int length) throws BadLocationException {
-		final List<ITreePartitionNode> nodes= new ArrayList<>();
-		final ITreePartitionNode root= TreePartitionUtils.getRootNode(document, this.sections.getPartitioning());
+		final List<TreePartitionNode> nodes= new ArrayList<>();
+		final TreePartitionNode root= TreePartitionUtils.getRootNode(document, this.sections.getPartitioning());
 		
 		addRChunkRegions(root, offset, offset + length, nodes);
 		
 		return nodes;
 	}
 	
-	private void addRChunkRegions(final ITreePartitionNode node, final int startOffset, final int endOffset,
-			final List<ITreePartitionNode> nodes) {
+	private void addRChunkRegions(final TreePartitionNode node, final int startOffset, final int endOffset,
+			final List<TreePartitionNode> nodes) {
 		final int childCount= node.getChildCount();
 		int childIdx= 0;
 		for (; childIdx < childCount; childIdx++) {
-			final ITreePartitionNode child= node.getChild(childIdx);
+			final TreePartitionNode child= node.getChild(childIdx);
 			if (child.getEndOffset() > startOffset) {
 				break;
 			}
 		}
 		for (; childIdx < childCount; childIdx++) {
-			final ITreePartitionNode child= node.getChild(childIdx);
+			final TreePartitionNode child= node.getChild(childIdx);
 			if (child.getStartOffset() >= endOffset) {
 				break;
 			}
@@ -84,9 +88,9 @@
 		}
 	}
 	
-	public IRegion getRChunkContentRegion(final IDocument document, final int offset)
+	public @Nullable IRegion getRChunkContentRegion(final IDocument document, final int offset)
 			throws BadLocationException {
-		final ITreePartitionNode rChunk= getRChunkRegion(document, offset);
+		final TreePartitionNode rChunk= getRChunkRegion(document, offset);
 		if (rChunk == null || rChunk.getLength() <= 2) {
 			return null;
 		}
@@ -113,24 +117,24 @@
 		}
 	}
 	
-	public List<ITreePartitionNode> getRChunkCodeRegions(final IDocument document,
+	public List<TreePartitionNode> getRChunkCodeRegions(final IDocument document,
 			final int offset, final int length) throws BadLocationException {
-		final List<ITreePartitionNode> rChunks= getRChunkRegions(document, offset, length);
-		final List<ITreePartitionNode> nodes= new ArrayList<>(rChunks.size());
+		final List<TreePartitionNode> rChunks= getRChunkRegions(document, offset, length);
+		final List<TreePartitionNode> nodes= new ArrayList<>(rChunks.size());
 		
 		final int endOffset= offset + length;
 		for (int i= 0; i < rChunks.size(); i++) {
-			final ITreePartitionNode node= rChunks.get(i);
+			final TreePartitionNode node= rChunks.get(i);
 			final int childCount= node.getChildCount();
 			int childIdx= 0;
 			for (; childIdx < childCount; childIdx++) {
-				final ITreePartitionNode child= node.getChild(childIdx);
+				final TreePartitionNode child= node.getChild(childIdx);
 				if (child.getEndOffset() > offset) {
 					break;
 				}
 			}
 			for (; childIdx < childCount; childIdx++) {
-				final ITreePartitionNode child= node.getChild(childIdx);
+				final TreePartitionNode child= node.getChild(childIdx);
 				if (child.getStartOffset() >= endOffset) {
 					break;
 				}
@@ -143,7 +147,7 @@
 		return nodes;
 	}
 	
-	public ITreePartitionNode getRCodeRegion(final IDocument document, final int offset)
+	public @Nullable TreePartitionNode getRCodeRegion(final IDocument document, final int offset)
 			throws BadLocationException {
 		return TreePartitionUtils.searchNode(document, this.sections.getPartitioning(), offset, true,
 				IRDocumentConstants.R_DEFAULT_CONTENT_TYPE );
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveResourceSourceUnit.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveResourceSourceUnit.java
index bfbefca..bf432de 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveResourceSourceUnit.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveResourceSourceUnit.java
@@ -17,7 +17,7 @@
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.IProgressMonitor;
 
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 
 import org.eclipse.statet.docmlet.tex.core.TexCoreAccess;
 import org.eclipse.statet.docmlet.tex.core.model.TexWorkspaceSourceUnit;
@@ -56,7 +56,7 @@
 	}
 	
 	@Override
-	public IDocContentSections getDocumentContentInfo() {
+	public DocContentSections getDocumentContentInfo() {
 		return LtxRweaveDocumentContentInfo.INSTANCE;
 	}
 	
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/core/source/LtxRweaveDocumentContentInfo.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/core/source/LtxRweaveDocumentContentInfo.java
index 30cd0d7..b432a1d 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/core/source/LtxRweaveDocumentContentInfo.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/core/source/LtxRweaveDocumentContentInfo.java
@@ -21,9 +21,11 @@
 import org.eclipse.jface.text.IRegion;
 
 import org.eclipse.statet.jcommons.collections.ImCollections;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
 
-import org.eclipse.statet.ecommons.text.core.sections.AbstractDocContentSections;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode;
+import org.eclipse.statet.ecommons.text.core.sections.BasicDocContentSections;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode;
 
 import org.eclipse.statet.docmlet.tex.core.source.TexDocumentConstants;
 import org.eclipse.statet.r.core.source.IRDocumentConstants;
@@ -31,7 +33,8 @@
 import org.eclipse.statet.redocs.r.core.source.RweaveDocSectionTreePartImpl;
 
 
-public class LtxRweaveDocumentContentInfo extends AbstractDocContentSections
+@NonNullByDefault
+public class LtxRweaveDocumentContentInfo extends BasicDocContentSections
 		implements DocContentSectionsRweaveExtension {
 	
 	
@@ -67,32 +70,32 @@
 	
 	
 	@Override
-	public ITreePartitionNode getRChunkRegion(final IDocument document, final int offset)
+	public @Nullable TreePartitionNode getRChunkRegion(final IDocument document, final int offset)
 			throws BadLocationException {
 		return this.rweaveImpl.getRChunkRegion(document, offset);
 	}
 	
 	@Override
-	public List<ITreePartitionNode> getRChunkRegions(final IDocument document,
+	public List<TreePartitionNode> getRChunkRegions(final IDocument document,
 			final int offset, final int length)
 			throws BadLocationException {
 		return this.rweaveImpl.getRChunkCodeRegions(document, offset, length);
 	}
 	
 	@Override
-	public IRegion getRChunkContentRegion(final IDocument document, final int offset)
+	public @Nullable IRegion getRChunkContentRegion(final IDocument document, final int offset)
 			throws BadLocationException {
 		return this.rweaveImpl.getRChunkContentRegion(document, offset);
 	}
 	
 	@Override
-	public ITreePartitionNode getRCodeRegion(final IDocument document, final int offset)
+	public @Nullable TreePartitionNode getRCodeRegion(final IDocument document, final int offset)
 			throws BadLocationException {
 		return this.rweaveImpl.getRCodeRegion(document, offset);
 	}
 	
 	@Override
-	public List<ITreePartitionNode> getRChunkCodeRegions(final IDocument document,
+	public List<TreePartitionNode> getRChunkCodeRegions(final IDocument document,
 			final int offset, final int length)
 			throws BadLocationException {
 		return this.rweaveImpl.getRChunkCodeRegions(document, offset, length);
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/core/source/LtxRweavePartitionNodeScanner.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/core/source/LtxRweavePartitionNodeScanner.java
index ad9d124..0b3a2d7 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/core/source/LtxRweavePartitionNodeScanner.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/redocs/tex/r/core/source/LtxRweavePartitionNodeScanner.java
@@ -14,13 +14,13 @@
 
 package org.eclipse.statet.redocs.tex.r.core.source;
 
-import static org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode.END_UNCLOSED;
+import static org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode.END_UNCLOSED;
 
 import org.eclipse.jface.text.rules.ICharacterScanner;
 
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNodeScan;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.WrappedPartitionScan;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNodeScan;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.WrappedPartitionNodeScan;
 
 import org.eclipse.statet.docmlet.tex.core.source.LtxPartitionNodeScanner;
 import org.eclipse.statet.docmlet.tex.core.source.LtxPartitionNodeType;
@@ -67,10 +67,10 @@
 	
 	private final RChunkPartitionNodeScanner rScanner= new RChunkPartitionNodeScanner();
 	
-	private WrappedPartitionScan rScan;
+	private WrappedPartitionNodeScan rScan;
 	
 	private int rStartOffset;
-	private ITreePartitionNode rStartNode;
+	private TreePartitionNode rStartNode;
 	
 	
 	public LtxRweavePartitionNodeScanner() {
@@ -83,8 +83,8 @@
 	
 	
 	@Override
-	public void execute(final ITreePartitionNodeScan scan) {
-		this.rScan= new WrappedPartitionScan(scan);
+	public void execute(final TreePartitionNodeScan scan) {
+		this.rScan= new WrappedPartitionNodeScan(scan);
 		
 		super.execute(scan);
 		
@@ -94,12 +94,12 @@
 	
 	@Override
 	protected void init() {
-		final ITreePartitionNode beginNode= getScan().getBeginNode();
+		final TreePartitionNode beginNode= getScan().getBeginNode();
 		if (beginNode.getType() instanceof RPartitionNodeType) {
 			this.rStartOffset= getScan().getStartOffset();
 			this.rStartNode= beginNode;
 			
-			final ITreePartitionNode rRootNode= RPartitionNodeScanner.findRRootNode(beginNode);
+			final TreePartitionNode rRootNode= RPartitionNodeScanner.findRRootNode(beginNode);
 			if (rRootNode.getType() == RChunkPartitionNodeScanner.R_CHUNK_BASE_TYPE) {
 				initNode(rRootNode, RCHUNK_LTX_TYPE);
 			}
@@ -148,7 +148,7 @@
 	
 	@Override
 	protected void processExt(final LtxPartitionNodeType type) {
-		final ITreePartitionNode node;
+		final TreePartitionNode node;
 		switch (type.getScannerState()) {
 		
 		case S_RVERB:
@@ -172,7 +172,7 @@
 			this.rScanner.execute(this.rScan);
 			this.rScan.exit();
 			
-			final ITreePartitionNode chunkNode= getNode();
+			final TreePartitionNode chunkNode= getNode();
 			exitNode();
 			setRange(chunkNode.getEndOffset(), getScan().getDocument().getLength());
 			return;
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 c6d9aa4..29528c6 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
@@ -31,7 +31,7 @@
 import org.eclipse.statet.jcommons.text.core.TextRegion;
 
 import org.eclipse.statet.ecommons.text.ICharPairMatcher;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 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;
@@ -80,7 +80,7 @@
 	
 	private static class LtxConfiguration extends LtxSourceViewerConfiguration {
 		
-		public LtxConfiguration(final IDocContentSections documentContentInfo, final int flags,
+		public LtxConfiguration(final DocContentSections documentContentInfo, final int flags,
 				final ISourceEditor editor,
 				final TexCoreAccess texCoreAccess,
 				final IPreferenceStore preferenceStore) {
@@ -128,7 +128,7 @@
 	
 	private static class RChunkConfiguration extends RSourceViewerConfiguration {
 		
-		public RChunkConfiguration(final IDocContentSections documentContentInfo, final int flags,
+		public RChunkConfiguration(final DocContentSections documentContentInfo, final int flags,
 				final IRSourceEditor sourceEditor,
 				final IRCoreAccess coreAccess,
 				final IPreferenceStore preferenceStore) {
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikidocRweaveResourceSourceUnit.java b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikidocRweaveResourceSourceUnit.java
index 0185d15..152428b 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikidocRweaveResourceSourceUnit.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikidocRweaveResourceSourceUnit.java
@@ -17,7 +17,7 @@
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.IProgressMonitor;
 
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 
 import org.eclipse.statet.docmlet.wikitext.core.WikitextCore;
 import org.eclipse.statet.docmlet.wikitext.core.WikitextCoreAccess;
@@ -56,7 +56,7 @@
 	}
 	
 	@Override
-	public IDocContentSections getDocumentContentInfo() {
+	public DocContentSections getDocumentContentInfo() {
 		return WikidocRweaveDocumentContentInfo.INSTANCE;
 	}
 	
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/core/source/WikidocRweaveDocumentContentInfo.java b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/core/source/WikidocRweaveDocumentContentInfo.java
index 3a73710..448fe61 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/core/source/WikidocRweaveDocumentContentInfo.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/core/source/WikidocRweaveDocumentContentInfo.java
@@ -21,9 +21,11 @@
 import org.eclipse.jface.text.IRegion;
 
 import org.eclipse.statet.jcommons.collections.ImCollections;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
 
-import org.eclipse.statet.ecommons.text.core.sections.AbstractDocContentSections;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode;
+import org.eclipse.statet.ecommons.text.core.sections.BasicDocContentSections;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode;
 
 import org.eclipse.statet.docmlet.tex.core.source.TexDocumentConstants;
 import org.eclipse.statet.docmlet.wikitext.core.source.WikitextDocumentConstants;
@@ -33,7 +35,8 @@
 import org.eclipse.statet.yaml.core.source.YamlDocumentConstants;
 
 
-public class WikidocRweaveDocumentContentInfo extends AbstractDocContentSections
+@NonNullByDefault
+public class WikidocRweaveDocumentContentInfo extends BasicDocContentSections
 		implements DocContentSectionsRweaveExtension {
 	
 	
@@ -77,32 +80,32 @@
 	
 	
 	@Override
-	public ITreePartitionNode getRChunkRegion(final IDocument document, final int offset)
+	public @Nullable TreePartitionNode getRChunkRegion(final IDocument document, final int offset)
 			throws BadLocationException {
 		return this.rweaveImpl.getRChunkRegion(document, offset);
 	}
 	
 	@Override
-	public List<ITreePartitionNode> getRChunkRegions(final IDocument document,
+	public List<TreePartitionNode> getRChunkRegions(final IDocument document,
 			final int offset, final int length)
 			throws BadLocationException {
 		return this.rweaveImpl.getRChunkCodeRegions(document, offset, length);
 	}
 	
 	@Override
-	public IRegion getRChunkContentRegion(final IDocument document, final int offset)
+	public @Nullable IRegion getRChunkContentRegion(final IDocument document, final int offset)
 			throws BadLocationException {
 		return this.rweaveImpl.getRChunkContentRegion(document, offset);
 	}
 	
 	@Override
-	public ITreePartitionNode getRCodeRegion(final IDocument document, final int offset)
+	public @Nullable TreePartitionNode getRCodeRegion(final IDocument document, final int offset)
 			throws BadLocationException {
 		return this.rweaveImpl.getRCodeRegion(document, offset);
 	}
 	
 	@Override
-	public List<ITreePartitionNode> getRChunkCodeRegions(final IDocument document,
+	public List<TreePartitionNode> getRChunkCodeRegions(final IDocument document,
 			final int offset, final int length)
 			throws BadLocationException {
 		return this.rweaveImpl.getRChunkCodeRegions(document, offset, length);
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/core/source/WikidocRweavePartitionNodeScanner.java b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/core/source/WikidocRweavePartitionNodeScanner.java
index 57ea766..e8283ed 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/core/source/WikidocRweavePartitionNodeScanner.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/redocs/wikitext/r/core/source/WikidocRweavePartitionNodeScanner.java
@@ -16,8 +16,8 @@
 
 import static org.eclipse.statet.redocs.r.core.source.AbstractRChunkPartitionNodeScanner.R_CHUNK_BASE_TYPE;
 
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNode;
-import org.eclipse.statet.ecommons.text.core.treepartitioner.ITreePartitionNodeType;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNode;
+import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitionNodeType;
 
 import org.eclipse.statet.docmlet.wikitext.core.markup.WikitextMarkupLanguage;
 import org.eclipse.statet.docmlet.wikitext.core.source.EmbeddingAttributes;
@@ -55,7 +55,7 @@
 			}
 		}
 		
-		final ITreePartitionNode beginNode= getScan().getBeginNode();
+		final TreePartitionNode beginNode= getScan().getBeginNode();
 		if (beginNode.getType() instanceof RPartitionNodeType) {
 			assert (false);
 //			this.rBeginNode= beginNode;
@@ -88,7 +88,7 @@
 	}
 	
 	@Override
-	protected void endEmbeddingBlock(final ITreePartitionNodeType type, final Embedding embedding) {
+	protected void endEmbeddingBlock(final TreePartitionNodeType type, final Embedding embedding) {
 		if (type instanceof RPartitionNodeType) {
 //			embedded.setContentEndOffset(getScan().getDocument().getLength());
 			embedding.executeForeignScanner(this.rScanner);
@@ -112,7 +112,7 @@
 	}
 	
 	@Override
-	protected void endEmbeddingSpan(final ITreePartitionNodeType type, final Embedding embedding) {
+	protected void endEmbeddingSpan(final TreePartitionNodeType type, final Embedding embedding) {
 		if (type instanceof RPartitionNodeType) {
 			if (embedding.getContentEndOffset() < 0) {
 				embedding.setContentEndOffset(getEventEndOffset() - 1);
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 f5ca7f6..1596757 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
@@ -32,7 +32,7 @@
 
 import org.eclipse.statet.ecommons.templates.TemplateVariableProcessor;
 import org.eclipse.statet.ecommons.text.ICharPairMatcher;
-import org.eclipse.statet.ecommons.text.core.sections.IDocContentSections;
+import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 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;
@@ -83,7 +83,7 @@
 	
 	private static class WikidocConfiguration extends WikidocSourceViewerConfiguration {
 		
-		public WikidocConfiguration(final IDocContentSections documentContentInfo, final int flags,
+		public WikidocConfiguration(final DocContentSections documentContentInfo, final int flags,
 				final ISourceEditor editor,
 				final WikitextCoreAccess wikitextCoreAccess,
 				final IPreferenceStore preferenceStore) {
@@ -136,7 +136,7 @@
 	
 	private static class RChunkConfiguration extends RSourceViewerConfiguration {
 		
-		public RChunkConfiguration(final IDocContentSections documentContentInfo, final int flags,
+		public RChunkConfiguration(final DocContentSections documentContentInfo, final int flags,
 				final IRSourceEditor sourceEditor,
 				final IRCoreAccess coreAccess, final IPreferenceStore preferenceStore) {
 			super(documentContentInfo, flags, sourceEditor, coreAccess, preferenceStore, null);