Bug 575365: Adapt to Issues added to LTK

Change-Id: Ifb23c15e8ae30bc2f9eea09a92f502406409cf2d
diff --git a/r/org.eclipse.statet.ide.core/src/org/eclipse/statet/base/core/preferences/TaskTagsPreferences.java b/r/org.eclipse.statet.ide.core/src/org/eclipse/statet/base/core/preferences/TaskTagsPreferences.java
index bdaa1c2..98c3fca 100644
--- a/r/org.eclipse.statet.ide.core/src/org/eclipse/statet/base/core/preferences/TaskTagsPreferences.java
+++ b/r/org.eclipse.statet.ide.core/src/org/eclipse/statet/base/core/preferences/TaskTagsPreferences.java
@@ -27,9 +27,9 @@
 import org.eclipse.statet.ecommons.preferences.core.Preference.StringArrayPref;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 
+import org.eclipse.statet.ltk.issues.core.Issues;
 import org.eclipse.statet.ltk.issues.core.TaskPriority;
 import org.eclipse.statet.ltk.issues.core.TaskTag;
-import org.eclipse.statet.ltk.issues.core.Tasks;
 import org.eclipse.statet.ltk.issues.core.impl.BasicTaskTag;
 
 
@@ -38,9 +38,9 @@
 	public static final String GROUP_ID= "statet.task_tags"; //$NON-NLS-1$
 	
 	public static final StringArrayPref PREF_TAGS= new StringArrayPref(
-			StatetCorePreferenceNodes.CAT_MANAGMENT_QUALIFIER, Tasks.KEYWORD_PREF_KEY );
+			StatetCorePreferenceNodes.CAT_MANAGMENT_QUALIFIER, Issues.TASK_TAG_KEYWORD_PREF_KEY );
 	public static final EnumListPref<TaskPriority> PREF_PRIORITIES= new EnumListPref<>(
-			StatetCorePreferenceNodes.CAT_MANAGMENT_QUALIFIER, Tasks.PRIORITY_PREF_KEY,
+			StatetCorePreferenceNodes.CAT_MANAGMENT_QUALIFIER, Issues.TASK_TAG_PRIORITY_PREF_KEY,
 			TaskPriority.class );
 	
 	
@@ -71,7 +71,7 @@
 	 * @param prefs
 	 */
 	public TaskTagsPreferences(final PreferenceAccess prefs) {
-		this.taskTags= Tasks.loadTaskTags(StatetCorePreferenceNodes.CAT_MANAGMENT_QUALIFIER, prefs);
+		this.taskTags= Issues.loadTaskTags(StatetCorePreferenceNodes.CAT_MANAGMENT_QUALIFIER, prefs);
 	}
 	
 	
diff --git a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/internal/r/core/sourcemodel/SyntaxProblemReporterTest.java b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/internal/r/core/sourcemodel/SyntaxProblemReporterTest.java
index b781850..52168d1 100644
--- a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/internal/r/core/sourcemodel/SyntaxProblemReporterTest.java
+++ b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/internal/r/core/sourcemodel/SyntaxProblemReporterTest.java
@@ -31,8 +31,9 @@
 import org.eclipse.statet.ltk.core.Ltk;
 import org.eclipse.statet.ltk.core.SourceContent;
 import org.eclipse.statet.ltk.core.WorkingContext;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.ltk.issues.core.Problem;
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
+import org.eclipse.statet.ltk.issues.core.Task;
 import org.eclipse.statet.ltk.model.core.ModelManager;
 import org.eclipse.statet.r.core.input.BasicRSourceFragment;
 import org.eclipse.statet.r.core.input.RSourceFragment;
@@ -50,7 +51,7 @@
 	
 	private final RParser rParser= new RParser(ModelManager.MODEL_FILE);
 	
-	private final SyntaxProblemReporter problemReporter= new SyntaxProblemReporter();
+	private final SyntaxProblemReporter syntaxProblemReporter= new SyntaxProblemReporter();
 	
 	
 	public SyntaxProblemReporterTest() {
@@ -344,12 +345,12 @@
 	}
 	
 	private List<Problem> collectProblems(final String source) {
-		final RSourceUnit su= createSourceUnit(source);
-		final SourceContent sourceContent= su.getContent(new NullProgressMonitor());
+		final RSourceUnit sourceUnit= createSourceUnit(source);
+		final SourceContent sourceContent= sourceUnit.getContent(new NullProgressMonitor());
 		final SourceComponent sourceComponent= this.rParser.scanSourceUnit(
 				new StringParserInput(sourceContent.getString()).init() );
 		final List<Problem> collectedProblems= new ArrayList<>();
-		this.problemReporter.run(su, sourceContent, sourceComponent, new ProblemRequestor() {
+		this.syntaxProblemReporter.run(sourceComponent, sourceContent, new IssueRequestor() {
 			@Override
 			public void acceptProblems(final String categoryId, final List<Problem> problems) {
 				collectedProblems.addAll(problems);
@@ -359,6 +360,9 @@
 				collectedProblems.add(problem);
 			}
 			@Override
+			public void acceptTask(final Task task) {
+			}
+			@Override
 			public void finish() {
 			}
 		});
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/builder/RBuilder.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/builder/RBuilder.java
index e8cc126..e48b0ac 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/builder/RBuilder.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/builder/RBuilder.java
@@ -54,14 +54,13 @@
 import org.eclipse.statet.ltk.model.core.LtkModels;
 import org.eclipse.statet.ltk.model.core.SourceUnitManager;
 import org.eclipse.statet.r.core.RCore;
-import org.eclipse.statet.r.core.model.RModel;
 import org.eclipse.statet.r.core.model.RSourceUnit;
 import org.eclipse.statet.r.core.model.RWorkspaceSourceUnit;
 import org.eclipse.statet.r.core.project.RBuildpaths;
+import org.eclipse.statet.r.core.project.RIssues;
 import org.eclipse.statet.r.core.project.RProject;
 import org.eclipse.statet.r.core.project.RProjects;
 import org.eclipse.statet.r.core.project.RTaskMarkerHandler;
-import org.eclipse.statet.r.core.project.RTasks;
 
 
 public class RBuilder implements IResourceDeltaVisitor, IResourceVisitor {
@@ -69,8 +68,8 @@
 	
 	public static void clearMarkers(final IResource resource, final int depth) {
 		try {
-			resource.deleteMarkers(RModel.MODEL_PROBLEM_MARKER_TYPE, false, depth);
-			resource.deleteMarkers(RTasks.TASK_MARKER_TYPE, false, depth); //$NON-NLS-1$
+			resource.deleteMarkers(RIssues.R_MODEL_PROBLEM_MARKER_TYPE, false, depth);
+			resource.deleteMarkers(RIssues.TASK_MARKER_TYPE, false, depth);
 		}
 		catch (final CoreException e) {
 			RCorePlugin.logError("R Builder: Failed to remove old markers.", e);
@@ -177,7 +176,7 @@
 				&& (resource= delta.getResource()) instanceof IContainer ) {
 			final IContainer container= (IContainer) resource;
 			
-			this.project.deleteMarkers(RModel.BUILDPATH_PROBLEM_MARKER_TYPE, false, IResource.DEPTH_ZERO);
+			this.project.deleteMarkers(RIssues.BUILDPATH_PROBLEM_MARKER_TYPE, false, IResource.DEPTH_ZERO);
 			
 			switch (delta.getKind()) {
 			
@@ -303,7 +302,7 @@
 				pkgRoot= visitPkgRoot(
 						getContainer(this.project, this.pkgRootPath.removeFirstSegments(1)) );
 				
-				this.project.deleteMarkers(RModel.BUILDPATH_PROBLEM_MARKER_TYPE, false, IResource.DEPTH_ZERO);
+				this.project.deleteMarkers(RIssues.BUILDPATH_PROBLEM_MARKER_TYPE, false, IResource.DEPTH_ZERO);
 			}
 			m.worked(1);
 			
@@ -345,7 +344,7 @@
 	}
 	
 	private IContainer visitPkgRoot(final IContainer container) throws CoreException {
-		this.project.deleteMarkers(RModel.BUILDPATH_PROBLEM_MARKER_TYPE, false, IResource.DEPTH_ZERO);
+		this.project.deleteMarkers(RIssues.BUILDPATH_PROBLEM_MARKER_TYPE, false, IResource.DEPTH_ZERO);
 		
 		if (container.exists()) {
 			clearMarkers(container, IResource.DEPTH_ZERO);
@@ -406,7 +405,7 @@
 	public void clean(final IProject project, final IProgressMonitor monitor) {
 		this.project= project;
 		try {
-			project.deleteMarkers(RModel.BUILDPATH_PROBLEM_MARKER_TYPE, false, IResource.DEPTH_ZERO);
+			project.deleteMarkers(RIssues.BUILDPATH_PROBLEM_MARKER_TYPE, false, IResource.DEPTH_ZERO);
 			
 			clearMarkers(project, IResource.DEPTH_INFINITE);
 			
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/builder/RPkgReconciler.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/builder/RPkgReconciler.java
index fa8fd1e..8649fc5 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/builder/RPkgReconciler.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/builder/RPkgReconciler.java
@@ -35,8 +35,8 @@
 import org.eclipse.statet.ecommons.io.FileUtil.ReaderAction;
 
 import org.eclipse.statet.r.core.RCore;
-import org.eclipse.statet.r.core.model.RModel;
 import org.eclipse.statet.r.core.project.RBuildpaths;
+import org.eclipse.statet.r.core.project.RIssues;
 
 
 public class RPkgReconciler {
@@ -57,7 +57,7 @@
 			final IProject project= pkgRoot.getProject();
 			
 			if (!pkgRoot.exists()) {
-				project.createMarker(RModel.BUILDPATH_PROBLEM_MARKER_TYPE, Map.of(
+				project.createMarker(RIssues.BUILDPATH_PROBLEM_MARKER_TYPE, Map.of(
 						IMarker.SEVERITY, IMarker.SEVERITY_ERROR,
 						IMarker.MESSAGE, NLS.bind("R package folder ''{0}'' is missing.",
 								pkgRoot.getProjectRelativePath() ),
@@ -88,13 +88,13 @@
 				fileOp.doOperation(m);
 				
 				if (result.getPkgName() == null) {
-					file.createMarker(RModel.MODEL_PROBLEM_MARKER_TYPE, Map.of(
+					file.createMarker(RIssues.BUILDPATH_PROBLEM_MARKER_TYPE, Map.of(
 							IMarker.SEVERITY, IMarker.SEVERITY_ERROR,
 							IMarker.MESSAGE, "The declaration of 'Package' (R package name) is missing." ));
 				}
 			}
 			else {
-				pkgRoot.createMarker(RModel.MODEL_PROBLEM_MARKER_TYPE, Map.of(
+				pkgRoot.createMarker(RIssues.BUILDPATH_PROBLEM_MARKER_TYPE, Map.of(
 						IMarker.SEVERITY, IMarker.SEVERITY_ERROR,
 						IMarker.MESSAGE, "'DESCRIPTION' file for R package is missing." ));
 				
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/RReconciler.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/RReconciler.java
index 338d0bf..bfc251c 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/RReconciler.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/RReconciler.java
@@ -322,16 +322,16 @@
 	
 	protected void reportIssues(final Data data, final int flags) {
 		try {
-			final var problemRequestor= data.adapter.createProblemRequestor();
-			if (problemRequestor != null) {
+			final var issueRequestor= data.adapter.createIssueRequestor();
+			if (issueRequestor != null) {
 				try {
 					final var ast= nonNullAssert(data.ast);
-					this.riProblemReporter.run(data.sourceUnit, data.content,
-							(RAstNode)ast.getRoot(),
-							problemRequestor );
+					this.riProblemReporter.run(data.sourceUnit, (RAstNode)ast.getRoot(),
+							data.content,
+							issueRequestor, flags );
 				}
 				finally {
-					problemRequestor.finish();
+					issueRequestor.finish();
 				}
 			}
 		}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/SyntaxProblemReporter.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/SyntaxProblemReporter.java
index 9f59a27..2214250 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/SyntaxProblemReporter.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/sourcemodel/SyntaxProblemReporter.java
@@ -14,6 +14,7 @@
 
 package org.eclipse.statet.internal.r.core.sourcemodel;
 
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
 import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullLateInit;
 
 import static org.eclipse.statet.ltk.ast.core.AstNode.NA_OFFSET;
@@ -86,14 +87,12 @@
 import org.eclipse.statet.internal.r.core.RCorePlugin;
 import org.eclipse.statet.ltk.ast.core.StatusDetail;
 import org.eclipse.statet.ltk.core.SourceContent;
-import org.eclipse.statet.ltk.issues.core.BasicProblem;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.ltk.issues.core.Problem;
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
-import org.eclipse.statet.ltk.model.core.element.SourceUnit;
+import org.eclipse.statet.ltk.issues.core.impl.BasicProblem;
 import org.eclipse.statet.r.core.RCore;
 import org.eclipse.statet.r.core.data.RValueFormatter;
 import org.eclipse.statet.r.core.model.RModel;
-import org.eclipse.statet.r.core.model.RSourceUnit;
 import org.eclipse.statet.r.core.rsource.RSourceConstants;
 import org.eclipse.statet.r.core.rsource.RTerminal;
 import org.eclipse.statet.r.core.rsource.ast.Arithmetic;
@@ -132,7 +131,7 @@
 
 
 /**
- * Reports syntax problems in AST to {@link ProblemRequestor} of source units
+ * Reports syntax problems in AST to {@link IssueRequestor} of source units
  */
 @NonNullByDefault
 public class SyntaxProblemReporter extends RAstVisitor {
@@ -148,9 +147,8 @@
 	
 	private final boolean reportSubsequent= false;
 	
-	private SourceUnit sourceUnit= nonNullLateInit();
 	private SourceContent sourceContent= nonNullLateInit();
-	private ProblemRequestor currentRequestor= nonNullLateInit();
+	private IssueRequestor requestor= nonNullLateInit();
 	
 	private final RSourceMessageUtil messageUtil= new RSourceMessageUtil();
 	private final MessageBuilder messageBuilder= new MessageBuilder();
@@ -162,27 +160,33 @@
 	}
 	
 	
-	public void run(final RSourceUnit su, final SourceContent content,
-			final RAstNode node, final ProblemRequestor problemRequestor) {
+	public void run(final RAstNode node,
+			final SourceContent content,
+			final IssueRequestor requestor) {
 		try {
-			this.sourceUnit= su;
-			this.sourceContent= content;
+			this.sourceContent= nonNullAssert(content);
 			this.messageUtil.setSourceContent(content);
+			this.requestor= nonNullAssert(requestor);
 			
-			this.currentRequestor= problemRequestor;
 			node.acceptInR(this);
-			if (this.problemBuffer.size() > 0) {
-				this.currentRequestor.acceptProblems(RModel.R_TYPE_ID, this.problemBuffer);
+			
+			if (!this.problemBuffer.isEmpty()) {
+				this.requestor.acceptProblems(RModel.R_TYPE_ID, this.problemBuffer);
 			}
 		}
 		catch (final OperationCanceledException | InvocationTargetException e) {}
 		finally {
-			this.problemBuffer.clear();
-			this.sourceUnit= null;
-			this.currentRequestor= null;
+			clear();
 		}
 	}
 	
+	@SuppressWarnings("null")
+	private void clear() {
+		this.problemBuffer.clear();
+		this.sourceContent= null;
+		this.requestor= null;
+	}
+	
 	
 	private boolean requiredCheck(final int code) {
 		return code != STATUS_OK &&
@@ -205,7 +209,7 @@
 				startOffset, endOffset ));
 		
 		if (this.problemBuffer.size() >= BUFFER_SIZE) {
-			this.currentRequestor.acceptProblems(RModel.R_TYPE_ID, this.problemBuffer);
+			this.requestor.acceptProblems(RModel.R_TYPE_ID, this.problemBuffer);
 			this.problemBuffer.clear();
 		}
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/RModel.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/RModel.java
index 5000f97..62a3a5e 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/RModel.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/RModel.java
@@ -52,11 +52,6 @@
 	public static final RElementName GLOBAL_ENV_NAME= RElementName.create(RElementName.SCOPE_SEARCH_ENV, ".GlobalEnv"); //$NON-NLS-1$
 	
 	
-	public static final String BUILDPATH_PROBLEM_MARKER_TYPE= "org.eclipse.statet.r.resourceMarkers.BuildpathProblem"; //$NON-NLS-1$
-	
-	public static final String MODEL_PROBLEM_MARKER_TYPE= "org.eclipse.statet.r.resourceMarkers.RModelProblem"; //$NON-NLS-1$
-	
-	
 	/**
 	 * @return the manager for the R model
 	 */
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/build/RProblemReporter.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/build/RProblemReporter.java
index 99f4199..415c5bf 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/build/RProblemReporter.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/build/RProblemReporter.java
@@ -19,7 +19,7 @@
 import org.eclipse.statet.internal.r.core.sourcemodel.SyntaxProblemReporter;
 import org.eclipse.statet.ltk.ast.core.AstNode;
 import org.eclipse.statet.ltk.core.SourceContent;
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.r.core.model.RSourceUnit;
 import org.eclipse.statet.r.core.rsource.ast.RAstNode;
 
@@ -35,25 +35,33 @@
 	}
 	
 	
-	public void run(final RSourceUnit su, final SourceContent content,
-			final RAstNode node, final ProblemRequestor problemRequestor) {
-		this.syntaxProblemReporter.run(su, content, node, problemRequestor);
+	public void run(final RSourceUnit sourceUnit, final RAstNode node,
+			final SourceContent content,
+			final IssueRequestor requestor, final int level) {
+		this.syntaxProblemReporter.run(node, content, requestor);
 	}
 	
-	public void run(final RSourceUnit su, final SourceContent content,
-			final AstNode node, final ProblemRequestor problemRequestor) {
+	public void run(final RSourceUnit sourceUnit, final AstNode node,
+			final SourceContent content,
+			final IssueRequestor requestor, final int level) {
 		if (node instanceof RAstNode) {
-			run(su, content, (RAstNode)node, problemRequestor);
+			run(sourceUnit, (RAstNode)node, content, requestor, level);
 		}
 		else {
 			final int n= node.getChildCount();
 			for (int i= 0; i < n; i++) {
 				final AstNode child= node.getChild(i);
 				if (child instanceof RAstNode) {
-					run(su, content, (RAstNode)child, problemRequestor);
+					run(sourceUnit, (RAstNode)child, content, requestor, level);
 				}
 			}
 		}
 	}
 	
+	public void run(final RAstNode node,
+			final SourceContent content,
+			final IssueRequestor requestor, final int level) {
+		this.syntaxProblemReporter.run(node, content, requestor);
+	}
+	
 }
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RTasks.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RIssues.java
similarity index 74%
rename from r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RTasks.java
rename to r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RIssues.java
index 7e1b573..9fe3b3a 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RTasks.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RIssues.java
@@ -18,13 +18,18 @@
 
 
 @NonNullByDefault
-public class RTasks {
+public final class RIssues {
 	
 	
 	public static final String TASK_MARKER_TYPE= "org.eclipse.statet.r.resourceMarkers.Tasks"; //$NON-NLS-1$
 	
 	
-	private RTasks() {
+	public static final String BUILDPATH_PROBLEM_MARKER_TYPE= "org.eclipse.statet.r.resourceMarkers.BuildpathProblem"; //$NON-NLS-1$
+	
+	public static final String R_MODEL_PROBLEM_MARKER_TYPE= "org.eclipse.statet.r.resourceMarkers.RModelProblem"; //$NON-NLS-1$
+	
+	
+	private RIssues() {
 	}
 	
 }
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RTaskMarkerHandler.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RTaskMarkerHandler.java
index 7f11c3b..2c836c3 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RTaskMarkerHandler.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RTaskMarkerHandler.java
@@ -17,7 +17,7 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
 import org.eclipse.statet.base.core.preferences.StatetCorePreferenceNodes;
-import org.eclipse.statet.ltk.issues.core.Tasks;
+import org.eclipse.statet.ltk.issues.core.Issues;
 import org.eclipse.statet.ltk.issues.core.impl.TaskMarkerHandler;
 
 
@@ -26,12 +26,12 @@
 	
 	
 	public RTaskMarkerHandler() {
-		super(RTasks.TASK_MARKER_TYPE);
+		super(RIssues.TASK_MARKER_TYPE);
 	}
 	
 	
 	public void init(final RProject project) {
-		final var taskTags= Tasks.loadTaskTags(StatetCorePreferenceNodes.CAT_MANAGMENT_QUALIFIER,
+		final var taskTags= Issues.loadTaskTags(StatetCorePreferenceNodes.CAT_MANAGMENT_QUALIFIER,
 				project.getPrefs() );
 		initTaskPattern(taskTags);
 	}
diff --git a/r/org.eclipse.statet.r.debug.core/src/org/eclipse/statet/internal/r/debug/core/eval/ExpressionValidator.java b/r/org.eclipse.statet.r.debug.core/src/org/eclipse/statet/internal/r/debug/core/eval/ExpressionValidator.java
index e9c0ec2..477bb17 100644
--- a/r/org.eclipse.statet.r.debug.core/src/org/eclipse/statet/internal/r/debug/core/eval/ExpressionValidator.java
+++ b/r/org.eclipse.statet.r.debug.core/src/org/eclipse/statet/internal/r/debug/core/eval/ExpressionValidator.java
@@ -25,8 +25,10 @@
 import org.eclipse.statet.internal.r.debug.core.Messages;
 import org.eclipse.statet.ltk.ast.core.AstInfo;
 import org.eclipse.statet.ltk.core.SourceContent;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.ltk.issues.core.Problem;
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
+import org.eclipse.statet.ltk.issues.core.Task;
+import org.eclipse.statet.ltk.model.core.ModelManager;
 import org.eclipse.statet.r.core.model.build.RProblemReporter;
 import org.eclipse.statet.r.core.rsource.ast.RAstNode;
 import org.eclipse.statet.r.core.rsource.ast.RAsts;
@@ -34,7 +36,7 @@
 
 
 @NonNullByDefault
-public class ExpressionValidator implements ProblemRequestor {
+public class ExpressionValidator implements IssueRequestor {
 	
 	
 	private static class StopReporterException extends RuntimeException {
@@ -67,7 +69,7 @@
 			else if (RAsts.hasErrors(node)) {
 				final SourceContent content= new SourceContent(0, expression);
 				try {
-					this.rProblemReporter.run(null, content, node, this);
+					this.rProblemReporter.run(node, content, this, ModelManager.AST);
 				}
 				catch (final StopReporterException e) {}
 				if (this.errorMessage == null) {
@@ -99,6 +101,10 @@
 	}
 	
 	@Override
+	public void acceptTask(final Task task) {
+	}
+	
+	@Override
 	public void finish() {
 	}
 	
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUISuModelContainer.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUISuModelContainer.java
index 5c43017..a9967b2 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUISuModelContainer.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUISuModelContainer.java
@@ -17,7 +17,7 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.r.core.model.RSourceUnit;
 import org.eclipse.statet.r.core.model.build.RSourceUnitModelContainer;
 
@@ -32,8 +32,8 @@
 	
 	
 	@Override
-	public @Nullable ProblemRequestor createProblemRequestor() {
-		return RUIPlugin.getInstance().getRDocumentProvider().createProblemRequestor(
+	public @Nullable IssueRequestor createIssueRequestor() {
+		return RUIPlugin.getInstance().getRDocumentProvider().createIssueRequestor(
 				getSourceUnit() );
 	}
 	
diff --git a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/model/RChunkReconciler.java b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/model/RChunkReconciler.java
index c3e97cd..26b74de 100644
--- a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/model/RChunkReconciler.java
+++ b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/core/model/RChunkReconciler.java
@@ -38,7 +38,7 @@
 import org.eclipse.statet.ltk.ast.core.AstNode;
 import org.eclipse.statet.ltk.ast.core.EmbeddingAstNode;
 import org.eclipse.statet.ltk.core.SourceContent;
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.ltk.model.core.build.EmbeddingForeignReconcileTask;
 import org.eclipse.statet.ltk.model.core.build.SourceUnitModelContainer;
 import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
@@ -302,15 +302,14 @@
 		return null;
 	}
 	
-	public void reportEmbeddedProblems(final TModelContainer adapter,
+	public void reportEmbeddedIssues(final TModelContainer adapter,
 			final SourceContent content, final TModelInfo mainModel,
-			final ProblemRequestor problemRequestor, final int level,
-			final IProgressMonitor monitor) {
+			final IssueRequestor issueRequestor, final int level) {
 		final RSourceUnitModelInfo rModel= RModel.getRModelInfo(mainModel);
 		if (rModel == null) {
 			return;
 		}
-		final RSourceUnit su= adapter.getSourceUnit();
+		final RSourceUnit sourceUnit= adapter.getSourceUnit();
 		final RLangSourceElement element= rModel.getSourceElement();
 		if (element instanceof RCompositeSourceElement) {
 			final List<? extends RLangSourceElement> elements= ((RCompositeSourceElement) element)
@@ -318,7 +317,7 @@
 			for (final RLangSourceElement rChunk : elements) {
 				final AstNode rChunkNode= rChunk.getAdapter(AstNode.class);
 				if (rChunkNode != null) {
-					this.rpReporter.run(su, content, rChunkNode, problemRequestor);
+					this.rpReporter.run(sourceUnit, rChunkNode, content, issueRequestor, level);
 				}
 			}
 		}
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveSuModelContainer.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveSuModelContainer.java
index c3486ed..ce9dec8 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveSuModelContainer.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveSuModelContainer.java
@@ -16,7 +16,7 @@
 
 import java.util.List;
 
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
@@ -30,7 +30,7 @@
 import org.eclipse.statet.internal.redocs.tex.r.RedocsTexRPlugin;
 import org.eclipse.statet.ltk.core.Ltk;
 import org.eclipse.statet.ltk.core.SourceContent;
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.r.core.model.RModel;
 import org.eclipse.statet.r.core.rsource.RSourceConfig;
 import org.eclipse.statet.redocs.tex.r.core.model.LtxRweaveSourceUnit;
@@ -74,26 +74,26 @@
 	}
 	
 	@Override
-	public void reconcileEmbeddedModel(final SourceContent content, final LtxSourceUnitModelInfo texModel,
+	public void reconcileEmbeddedModel(final LtxSourceUnitModelInfo texModel, final SourceContent content,
 			final List<EmbeddingReconcileItem> list,
-			final int level, final IProgressMonitor monitor) {
+			final int level, final SubMonitor m) {
 		LtxRChunkReconciler.getInstance()
-				.reconcileModel(this, content, texModel, list, level, monitor);
+				.reconcileModel(this, content, texModel, list, level, m);
 	}
 	
 	@Override
-	public void reportEmbeddedProblems(final SourceContent content, final LtxSourceUnitModelInfo texModel,
-			final ProblemRequestor problemRequestor,
-			final int level, final IProgressMonitor monitor) {
+	public void reportEmbeddedIssues(final LtxSourceUnitModelInfo texModel, final SourceContent content,
+			final IssueRequestor issueRequestor,
+			final int level) {
 		LtxRChunkReconciler.getInstance()
-				.reportEmbeddedProblems(this, content, texModel, problemRequestor, level, monitor);
+				.reportEmbeddedIssues(this, content, texModel, issueRequestor, level);
 	}
 	
 	@Override
-	public @Nullable ProblemRequestor createProblemRequestor() {
+	public @Nullable IssueRequestor createIssueRequestor() {
 		if (getMode() == Ltk.EDITOR_CONTEXT) {
 			return RedocsTexRPlugin.getInstance().getDocRDocumentProvider()
-					.createProblemRequestor(getSourceUnit());
+					.createIssueRequestor(getSourceUnit());
 		}
 		return null;
 	}
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveTexBuildParticipant.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveTexBuildParticipant.java
index 91ae15b..0d91847 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveTexBuildParticipant.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/model/LtxRweaveTexBuildParticipant.java
@@ -33,7 +33,7 @@
 import org.eclipse.statet.r.core.model.build.RModelIndexUpdate;
 import org.eclipse.statet.r.core.project.RProject;
 import org.eclipse.statet.r.core.project.RProjects;
-import org.eclipse.statet.r.core.project.RTasks;
+import org.eclipse.statet.r.core.project.RIssues;
 import org.eclipse.statet.redocs.tex.r.core.model.LtxRweaveSourceUnit;
 import org.eclipse.statet.redocs.tex.r.core.model.TexRweaveModel;
 
@@ -68,7 +68,7 @@
 	
 	@Override
 	public void clearSourceUnit(final IFile file) throws CoreException {
-		file.deleteMarkers("org.eclipse.statet.r.resourceMarkers.Tasks", false, IResource.DEPTH_INFINITE); //$NON-NLS-1$
+		file.deleteMarkers(RIssues.TASK_MARKER_TYPE, false, IResource.DEPTH_INFINITE);
 	}
 	
 	@Override
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveDocumentProvider.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveDocumentProvider.java
index d3990df..ffc2af8 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveDocumentProvider.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveDocumentProvider.java
@@ -33,8 +33,8 @@
 import org.eclipse.statet.docmlet.tex.core.model.TexModel;
 import org.eclipse.statet.docmlet.tex.ui.editors.TexEditorBuild;
 import org.eclipse.statet.ltk.core.Ltk;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.ltk.issues.core.Problem;
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
 import org.eclipse.statet.ltk.model.core.LtkModels;
 import org.eclipse.statet.ltk.model.core.element.SourceUnit;
 import org.eclipse.statet.ltk.ui.sourceediting.SourceAnnotationModel;
@@ -55,13 +55,13 @@
 	private class ThisAnnotationModel extends SourceAnnotationModel {
 		
 		
-		private class ThisProblemRequestor extends SourceAnnotationProblemRequestor {
+		private class ThisIssueRequestor extends SourceAnnotationIssueRequestor {
 			
 			
 			private final boolean handleTemporaryRProblems;
 			
 			
-			public ThisProblemRequestor() {
+			public ThisIssueRequestor() {
 				this.handleTemporaryRProblems= isHandlingTemporaryRProblems();
 			}
 			
@@ -111,8 +111,8 @@
 		}
 		
 		@Override
-		protected ProblemRequestor doCreateProblemRequestor() {
-			return new ThisProblemRequestor();
+		protected IssueRequestor doCreateIssueRequestor() {
+			return new ThisIssueRequestor();
 		}
 		
 		@Override
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r.textile/src/org/eclipse/statet/internal/redocs/wikitext/r/textile/core/TextileValidator.java b/redocs/org.eclipse.statet.redocs.wikitext.r.textile/src/org/eclipse/statet/internal/redocs/wikitext/r/textile/core/TextileValidator.java
index 9344807..eb1c6cb 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r.textile/src/org/eclipse/statet/internal/redocs/wikitext/r/textile/core/TextileValidator.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r.textile/src/org/eclipse/statet/internal/redocs/wikitext/r/textile/core/TextileValidator.java
@@ -17,7 +17,6 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.osgi.util.NLS;
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
@@ -29,9 +28,9 @@
 import org.eclipse.statet.docmlet.wikitext.core.model.WikitextSourceUnit;
 import org.eclipse.statet.internal.redocs.wikitext.r.textile.Messages;
 import org.eclipse.statet.ltk.core.SourceContent;
-import org.eclipse.statet.ltk.issues.core.BasicProblem;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.ltk.issues.core.Problem;
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
+import org.eclipse.statet.ltk.issues.core.impl.BasicProblem;
 
 
 @NonNullByDefault
@@ -46,9 +45,9 @@
 	
 	
 	@Override
-	public void run(final WikitextSourceUnit su, final SourceContent sourceContent,
-			final WikidocSourceUnitModelInfo model,
-			final ProblemRequestor requestor, final int level, final IProgressMonitor monitor) {
+	public void run(final WikitextSourceUnit su, final WikidocSourceUnitModelInfo model,
+			final SourceContent sourceContent,
+			final IssueRequestor requestor, final int level) {
 		if (sourceContent.getStartOffset() != 0) {
 			throw new UnsupportedOperationException();
 		}
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikidocRweaveSuModelContainer.java b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikidocRweaveSuModelContainer.java
index 5cf7ccb..e3431a2 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikidocRweaveSuModelContainer.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikidocRweaveSuModelContainer.java
@@ -16,7 +16,7 @@
 
 import java.util.List;
 
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
@@ -32,7 +32,7 @@
 import org.eclipse.statet.internal.redocs.wikitext.r.RedocsWikitextRPlugin;
 import org.eclipse.statet.ltk.core.Ltk;
 import org.eclipse.statet.ltk.core.SourceContent;
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.r.core.model.RModel;
 import org.eclipse.statet.r.core.rsource.RSourceConfig;
 import org.eclipse.statet.redocs.wikitext.r.core.model.WikidocRweaveSourceUnit;
@@ -78,34 +78,35 @@
 	}
 	
 	@Override
-	public void reconcileEmbeddedModel(final SourceContent content, final WikidocSourceUnitModelInfo wikitextModel,
+	public void reconcileEmbeddedModel(final WikidocSourceUnitModelInfo wikitextModel, final SourceContent content,
 			final List<EmbeddingReconcileTask> list,
-			final int level, final IProgressMonitor monitor) {
+			final int level,
+			final SubMonitor m) {
 		final WikitextAstInfo astInfo= wikitextModel.getAst();
 		final WikitextMarkupLanguage markupLanguage= astInfo.getMarkupLanguage();
 		if (markupLanguage instanceof RweaveMarkupLanguage) {
 			WikidocRChunkReconciler.getInstance((RweaveMarkupLanguage)markupLanguage)
-					.reconcileModel(this, content, wikitextModel, list, level, monitor);
+					.reconcileModel(this, content, wikitextModel, list, level, m);
 		}
 	}
 	
 	@Override
-	public void reportEmbeddedProblems(final SourceContent content, final WikidocSourceUnitModelInfo wikitextModel,
-			final ProblemRequestor problemRequestor,
-			final int level, final IProgressMonitor monitor) {
+	public void reportEmbeddedIssues(final WikidocSourceUnitModelInfo wikitextModel, final SourceContent content,
+			final IssueRequestor issueRequestor,
+			final int level) {
 		final WikitextAstInfo astInfo= wikitextModel.getAst();
 		final WikitextMarkupLanguage markupLanguage= astInfo.getMarkupLanguage();
 		if (markupLanguage instanceof RweaveMarkupLanguage) {
 			WikidocRChunkReconciler.getInstance((RweaveMarkupLanguage)markupLanguage)
-					.reportEmbeddedProblems(this, content, wikitextModel, problemRequestor, level, monitor);
+					.reportEmbeddedIssues(this, content, wikitextModel, issueRequestor, level);
 		}
 	}
 	
 	@Override
-	public @Nullable ProblemRequestor createProblemRequestor() {
+	public @Nullable IssueRequestor createIssueRequestor() {
 		if (getMode() == Ltk.EDITOR_CONTEXT) {
 			return RedocsWikitextRPlugin.getInstance().getDocRDocumentProvider()
-					.createProblemRequestor(getSourceUnit());
+					.createIssueRequestor(getSourceUnit());
 		}
 		return null;
 	}
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikitextRweaveTexBuildParticipant.java b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikitextRweaveTexBuildParticipant.java
index f74de7c..3758071 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikitextRweaveTexBuildParticipant.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/core/model/WikitextRweaveTexBuildParticipant.java
@@ -33,6 +33,7 @@
 import org.eclipse.statet.r.core.model.build.RModelIndexUpdate;
 import org.eclipse.statet.r.core.project.RProject;
 import org.eclipse.statet.r.core.project.RProjects;
+import org.eclipse.statet.r.core.project.RIssues;
 import org.eclipse.statet.redocs.wikitext.r.core.model.WikidocRweaveSourceUnit;
 import org.eclipse.statet.redocs.wikitext.r.core.model.WikitextRweaveModel;
 
@@ -67,7 +68,7 @@
 	
 	@Override
 	public void clearSourceUnit(final IFile file) throws CoreException {
-		file.deleteMarkers("org.eclipse.statet.r.resourceMarkers.Tasks", false, IResource.DEPTH_INFINITE); //$NON-NLS-1$
+		file.deleteMarkers(RIssues.TASK_MARKER_TYPE, false, IResource.DEPTH_INFINITE);
 	}
 	
 	@Override
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveDocumentProvider.java b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveDocumentProvider.java
index a685bfa..eea7912 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveDocumentProvider.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveDocumentProvider.java
@@ -33,8 +33,8 @@
 import org.eclipse.statet.docmlet.wikitext.core.model.WikitextModel;
 import org.eclipse.statet.docmlet.wikitext.ui.editors.WikitextEditorBuild;
 import org.eclipse.statet.ltk.core.Ltk;
+import org.eclipse.statet.ltk.issues.core.IssueRequestor;
 import org.eclipse.statet.ltk.issues.core.Problem;
-import org.eclipse.statet.ltk.issues.core.ProblemRequestor;
 import org.eclipse.statet.ltk.model.core.LtkModels;
 import org.eclipse.statet.ltk.model.core.element.SourceUnit;
 import org.eclipse.statet.ltk.ui.sourceediting.SourceAnnotationModel;
@@ -56,13 +56,13 @@
 	private class ThisAnnotationModel extends SourceAnnotationModel {
 		
 		
-		private class ThisProblemRequestor extends SourceAnnotationProblemRequestor {
+		private class ThisIssueRequestor extends SourceAnnotationIssueRequestor {
 			
 			
 			private final boolean handleTemporaryRProblems;
 			
 			
-			public ThisProblemRequestor() {
+			public ThisIssueRequestor() {
 				this.handleTemporaryRProblems= isHandlingTemporaryRProblems();
 			}
 			
@@ -112,8 +112,8 @@
 		}
 		
 		@Override
-		protected ProblemRequestor doCreateProblemRequestor() {
-			return new ThisProblemRequestor();
+		protected IssueRequestor doCreateIssueRequestor() {
+			return new ThisIssueRequestor();
 		}
 		
 		@Override