Merge commit '41dd4b51bd7a7c206f7dd9294eb3bf1d6acc3913' into feature/UIMA-6341-Try-out-p2-layout-resolver

* commit '41dd4b51bd7a7c206f7dd9294eb3bf1d6acc3913':
  [UIMA-6341] Try out p2-layout-resolver
  [UIMA-6341] Try out p2-layout-resolver
  no jira - update version to upcoming release
  UIMA-6340: Ruta: Condition AFTER does not respect BLOCK window
  UIMA-6338: Ruta: Inconsistency Interpreter vs. Guide on VOTE
  no jira -  adapt test
  UIMA-6332: Ruta: change seeders param default to TextSeeder
  UIMA-6338: Ruta: Inconsistency Interpreter vs. Guide on VOTE
  UIMA-6332: Ruta: change seeders param default to TextSeeder
  UIMA-6319: TextSeeder creates MARKUP annotations
  UIMA-6319: TextSeeder creates MARKUP annotations
  UIMA-6324: | and & REs may miss matches
  UIMA-6324: | and & REs may miss matches

# Conflicts:
#	example-projects/ruta-ep-example-extensions/pom.xml
#	example-projects/ruta-maven-example/pom.xml
#	pom.xml
#	ruta-basic-type/pom.xml
#	ruta-core-ext/pom.xml
#	ruta-core/pom.xml
#	ruta-core/src/test/java/org/apache/uima/ruta/engine/DummySeeder.java
#	ruta-docbook/pom.xml
#	ruta-eclipse-feature/pom.xml
#	ruta-eclipse-update-site/pom.xml
#	ruta-ep-addons/pom.xml
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/ConstraintSelectView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/DocumentView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/ResultView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/check/AnnotationCheckView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/apply/ApplyView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/createdBy/CreatedByView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/element/ElementView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/failed/FailedView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/inlined/InlinedView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/matched/MatchedView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/rulelist/RuleListView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/selection/ExplainSelectionView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/statistics/StatisticsView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/TestPageBookView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/fn/FalseNegativeView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/fp/FalsePositiveView.java
#	ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/tp/TruePositiveView.java
#	ruta-ep-caseditor/pom.xml
#	ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/browser/AnnotationBrowserView.java
#	ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/html/HtmlView.java
#	ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/selection/SelectionView.java
#	ruta-ep-core-ext/pom.xml
#	ruta-ep-engine/pom.xml
#	ruta-ep-ide-ui/pom.xml
#	ruta-ep-ide/pom.xml
#	ruta-ep-parent/pom.xml
#	ruta-ep-textruler/pom.xml
#	ruta-maven-archetype/pom.xml
#	ruta-maven-plugin/pom.xml
#	ruta-parent/pom.xml
#	ruta-typesystem/pom.xml
v
diff --git a/example-projects/ruta-ep-example-extensions/pom.xml b/example-projects/ruta-ep-example-extensions/pom.xml
index 3415ca0..5b581c1 100644
--- a/example-projects/ruta-ep-example-extensions/pom.xml
+++ b/example-projects/ruta-ep-example-extensions/pom.xml
@@ -17,7 +17,6 @@
   specific language governing permissions and limitations

   under the License.

 -->

-

 <project xmlns="http://maven.apache.org/POM/4.0.0"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

@@ -64,12 +63,12 @@
       </exclusions>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.equinox.app</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.emf.ecore.xmi</artifactId>

       <scope>provided</scope>

     </dependency>

diff --git a/ruta-core-ext/src/test/java/org/apache/uima/ruta/action/MarkTableReloadTest.java b/ruta-core-ext/src/test/java/org/apache/uima/ruta/action/MarkTableReloadTest.java
index 08d379f..9512478 100644
--- a/ruta-core-ext/src/test/java/org/apache/uima/ruta/action/MarkTableReloadTest.java
+++ b/ruta-core-ext/src/test/java/org/apache/uima/ruta/action/MarkTableReloadTest.java
@@ -36,6 +36,7 @@
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
+import org.apache.uima.ruta.seed.DefaultSeeder;
 import org.junit.Test;
 
 public class MarkTableReloadTest {
@@ -63,6 +64,7 @@
       String textFileName = namespace + "/" + name + ".txt";
       Map<String, Object> parameters = new HashMap<>();
       parameters.put(RutaEngine.PARAM_ADDITIONAL_EXTENSIONS, new String[] {MarkReloadExtension.class.getName()});
+      parameters.put(RutaEngine.PARAM_SEEDERS, new String[] {DefaultSeeder.class.getName()});
       cas = RutaTestUtils.process(ruleFileName, textFileName, parameters, 50, complexTypes, features, namespace + "/", null);
     } catch (Exception e) {
       e.printStackTrace();
diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java b/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
index 08a53d8..3778925 100644
--- a/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
+++ b/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
@@ -1118,8 +1118,12 @@
   }

 

   public Collection<AnnotationFS> getAnnotations(Type type) {

+

+    return getAnnotations(type, filter.getWindowAnnotation());

+  }

+

+  public Collection<AnnotationFS> getAnnotations(Type type, AnnotationFS windowAnnotation) {

     Collection<AnnotationFS> result = new LinkedList<>();

-    AnnotationFS windowAnnotation = filter.getWindowAnnotation();

     if (windowAnnotation != null

             && (windowAnnotation.getBegin() != cas.getDocumentAnnotation().getBegin()

                     || windowAnnotation.getEnd() != cas.getDocumentAnnotation().getEnd())) {

diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/condition/AfterCondition.java b/ruta-core/src/main/java/org/apache/uima/ruta/condition/AfterCondition.java
index 8f654eb..67cf30b 100644
--- a/ruta-core/src/main/java/org/apache/uima/ruta/condition/AfterCondition.java
+++ b/ruta-core/src/main/java/org/apache/uima/ruta/condition/AfterCondition.java
@@ -65,20 +65,26 @@
     if (annotation == null || t == null) {

       return false;

     }

-    boolean result = false;

-    FSIterator<AnnotationFS> it = stream.getCas().getAnnotationIndex(t).iterator(annotation);

-    if (!it.isValid()) {

-      it.moveToLast();

+

+    AnnotationFS window = stream.getDocumentAnnotation();

+

+    FSIterator<AnnotationFS> it = null;

+    if (window == null || window.equals(stream.getCas().getDocumentAnnotation())) {

+      it = stream.getCas().getAnnotationIndex(t).iterator();

+    } else {

+      it = stream.getCas().getAnnotationIndex(t).subiterator(window);

     }

-    while (it.isValid()) {

-      AnnotationFS a = it.get();

-      if (a.getBegin() <= annotation.getBegin()) {

-        result = true;

-        break;

+

+    it.moveToFirst();

+

+    if (it.isValid()) {

+      AnnotationFS first = it.get();

+      if (first.getEnd() <= annotation.getBegin()) {

+        return true;

       }

-      it.moveToPrevious();

     }

-    return result;

+

+    return false;

   }

 

 }

diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/condition/BeforeCondition.java b/ruta-core/src/main/java/org/apache/uima/ruta/condition/BeforeCondition.java
index cc91588..07bbaf4 100644
--- a/ruta-core/src/main/java/org/apache/uima/ruta/condition/BeforeCondition.java
+++ b/ruta-core/src/main/java/org/apache/uima/ruta/condition/BeforeCondition.java
@@ -65,17 +65,26 @@
     if (annotation == null || t == null) {

       return false;

     }

-    boolean result = false;

-    FSIterator<AnnotationFS> it = stream.getCas().getAnnotationIndex(t).iterator(annotation);

-    while (it.isValid()) {

-      AnnotationFS a = it.get();

-      if (a.getEnd() >= annotation.getBegin()) {

-        result = true;

-        break;

-      }

-      it.moveToNext();

+

+    AnnotationFS window = stream.getDocumentAnnotation();

+

+    FSIterator<AnnotationFS> it = null;

+    if (window == null || window.equals(stream.getCas().getDocumentAnnotation())) {

+      it = stream.getCas().getAnnotationIndex(t).iterator();

+    } else {

+      it = stream.getCas().getAnnotationIndex(t).subiterator(window);

     }

-    return result;

+

+    it.moveToLast();

+

+    if (it.isValid()) {

+      AnnotationFS last = it.get();

+      if (last.getBegin() >= annotation.getEnd()) {

+        return true;

+      }

+    }

+

+    return false;

   }

 

 }

diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/condition/VoteCondition.java b/ruta-core/src/main/java/org/apache/uima/ruta/condition/VoteCondition.java
index d9295ab..c08fa94 100644
--- a/ruta-core/src/main/java/org/apache/uima/ruta/condition/VoteCondition.java
+++ b/ruta-core/src/main/java/org/apache/uima/ruta/condition/VoteCondition.java
@@ -19,15 +19,12 @@
 

 package org.apache.uima.ruta.condition;

 

-import java.util.List;

-

 import org.apache.uima.cas.Type;

 import org.apache.uima.cas.text.AnnotationFS;

 import org.apache.uima.ruta.RutaStream;

 import org.apache.uima.ruta.expression.type.ITypeExpression;

 import org.apache.uima.ruta.rule.EvaluatedCondition;

 import org.apache.uima.ruta.rule.MatchContext;

-import org.apache.uima.ruta.type.RutaBasic;

 import org.apache.uima.ruta.visitor.InferenceCrowd;

 

 public class VoteCondition extends TerminalRutaCondition {

@@ -45,22 +42,15 @@
   @Override

   public EvaluatedCondition eval(MatchContext context, RutaStream stream, InferenceCrowd crowd) {

     AnnotationFS annotation = context.getAnnotation();

-    int count1 = 0;

-    int count2 = 0;

     Type t1 = type1.getType(context, stream);

     Type t2 = type2.getType(context, stream);

 

-    if (annotation != null && t1 != null && t2 != null) {

-      List<RutaBasic> annotations = stream.getBasicsInWindow(annotation);

-      for (RutaBasic each : annotations) {

-        if (each.beginsWith(t1)) {

-          count1++;

-        }

-        if (each.beginsWith(t2)) {

-          count2++;

-        }

-      }

+    if (t1 == null || t2 == null) {

+      return new EvaluatedCondition(this, false);

     }

+

+    int count1 = stream.getAnnotations(t1, annotation).size();

+    int count2 = stream.getAnnotations(t2, annotation).size();

     return new EvaluatedCondition(this, count1 > count2);

   }

 

diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java b/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
index 093e35a..d2a98fc 100644
--- a/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
+++ b/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
@@ -247,7 +247,7 @@
   public static final String PARAM_SEEDERS = "seeders";

 

   @ConfigurationParameter(name = PARAM_SEEDERS, mandatory = false, defaultValue = {

-      "org.apache.uima.ruta.seed.DefaultSeeder" })

+      "org.apache.uima.ruta.seed.TextSeeder" })

   private String[] seeders;

 

   /**

diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaTestUtils.java b/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaTestUtils.java
index f0e5a4e..87d7c61 100644
--- a/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaTestUtils.java
+++ b/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaTestUtils.java
@@ -29,6 +29,7 @@
 import java.util.Collection;

 import java.util.HashMap;

 import java.util.Iterator;

+import java.util.LinkedHashMap;

 import java.util.List;

 import java.util.Map;

 import java.util.Map.Entry;

@@ -50,6 +51,7 @@
 import org.apache.uima.resource.ResourceSpecifier;

 import org.apache.uima.resource.metadata.TypeDescription;

 import org.apache.uima.resource.metadata.TypeSystemDescription;

+import org.apache.uima.ruta.seed.DefaultSeeder;

 import org.apache.uima.util.CasCreationUtils;

 import org.apache.uima.util.CasIOUtils;

 import org.apache.uima.util.FileUtils;

@@ -343,6 +345,18 @@
     return cas;

   }

 

+  public static CAS processTestScriptWithDefaultSeeder(Class<?> testClass) throws Exception {

+    String name = testClass.getSimpleName();

+    String namespace = testClass.getPackage().getName().replaceAll("\\.", "/");

+    String scriptPath = namespace + "/" + name + RutaEngine.SCRIPT_FILE_EXTENSION;

+    String textPath = namespace + "/" + name + ".txt";

+

+    Map<String, Object> params = new LinkedHashMap<>();

+    params.put(RutaEngine.PARAM_SEEDERS, new String[] { DefaultSeeder.class.getName() });

+

+    return RutaTestUtils.process(scriptPath, textPath, params, 50);

+  }

+

   public static void storeCas(CAS cas, String name) {

     File file = new File("input/" + name + ".xmi");

     file.getParentFile().mkdirs();

@@ -356,4 +370,5 @@
       IOUtils.closeQuietly(fos);

     }

   }

+

 }

diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java b/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java
index 8af7336..b5634a9 100644
--- a/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java
+++ b/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java
@@ -254,12 +254,12 @@
             continue;

           }

           ComposedRuleElementMatch startElementMatch = (ComposedRuleElementMatch) eachStartRuleMatch

-                  .getLastMatch(this, true);

-          List<RuleMatch> continueMatch = each.continueMatch(true, annotation, eachStartRuleMatch,

+                  .getLastMatch(this, after);

+          List<RuleMatch> continueMatch = each.continueMatch(after, annotation, eachStartRuleMatch,

                   null, startElementMatch, null, this, stream, crowd);

           for (RuleMatch startRuleMatch : continueMatch) {

             ComposedRuleElementMatch elementMatch = (ComposedRuleElementMatch) startRuleMatch

-                    .getLastMatch(this, true);

+                    .getLastMatch(this, after);

             ruleMatches.put(startRuleMatch, elementMatch);

           }

         }

@@ -327,8 +327,7 @@
           Map<RuleMatch, ComposedRuleElementMatch> ruleMatches, boolean direction,

           RutaStream stream) {

     // TODO hotfix: this needs a correct implementation

-    Map<RuleMatch, ComposedRuleElementMatch> result = new TreeMap<>(

-            ruleMatchComparator);

+    Map<RuleMatch, ComposedRuleElementMatch> result = new TreeMap<>(ruleMatchComparator);

     Set<Entry<RuleMatch, ComposedRuleElementMatch>> entrySet = ruleMatches.entrySet();

     Entry<RuleMatch, ComposedRuleElementMatch> largestEntry = null;

     AnnotationFS largestAnnotation = null;

@@ -336,7 +335,7 @@
       RuleMatch ruleMatch = entry.getKey();

       ComposedRuleElementMatch elementMatch = entry.getValue();

       if (elementMatch.matched()) {

-        result.put(ruleMatch, elementMatch);

+        result.putIfAbsent(ruleMatch, elementMatch);

       } else {

         MatchContext context = new MatchContext(getFirstElement(), ruleMatch, direction);

         AnnotationFS lastMatchedAnnotation = ruleMatch.getLastMatchedAnnotation(context, stream);

@@ -565,8 +564,7 @@
     RutaEnvironment environment = context.getParent().getEnvironment();

     environment.addMatchToVariable(ruleMatch, this, context, stream);

 

-    List<EvaluatedCondition> evaluatedConditions = new ArrayList<>(

-            conditions.size());

+    List<EvaluatedCondition> evaluatedConditions = new ArrayList<>(conditions.size());

     for (AbstractRutaCondition condition : conditions) {

       crowd.beginVisit(condition, null);

       EvaluatedCondition eval = condition.eval(context, stream, crowd);

diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/seed/DefaultSeeder.java b/ruta-core/src/main/java/org/apache/uima/ruta/seed/DefaultSeeder.java
index 97fd53d..d294da1 100644
--- a/ruta-core/src/main/java/org/apache/uima/ruta/seed/DefaultSeeder.java
+++ b/ruta-core/src/main/java/org/apache/uima/ruta/seed/DefaultSeeder.java
@@ -40,6 +40,9 @@
   private final Pattern markupPattern = Pattern.compile(

           "</?\\w[\\w-]*((\\s+[\\w-]+(\\s*=\\s*(?:\".*?\"|'.*?'|[^'\">\\s]+))?)+\\s*|\\s*)/?>");

 

+  private final Pattern xmlCommentPattern = Pattern.compile("<!--[\\s\\S\n]*?-->");

+

+  @Override

   public Type seed(String text, CAS cas) {

     Type result = super.seed(text, cas);

     JCas jCas = null;

@@ -52,20 +55,26 @@
     // FIXME: lexer rules for html markup won't work. Therefore, those rules where removed in the

     // grammar and the functionality is included directly with regex

     if (text != null) {

-      Matcher matcher = markupPattern.matcher(text);

       Collection<AnnotationFS> toRemove = new LinkedList<AnnotationFS>();

-      while (matcher.find()) {

-        int begin = matcher.start();

-        int end = matcher.end();

-        MARKUP markup = new MARKUP(jCas, begin, end);

-        markup.addToIndexes();

-        List<AnnotationFS> selectCovered = CasUtil.selectCovered(result, markup);

-        toRemove.addAll(selectCovered);

-      }

+      addMarkupAnnotations(text, result, xmlCommentPattern, jCas, toRemove);

+      addMarkupAnnotations(text, result, markupPattern, jCas, toRemove);

       for (AnnotationFS each : toRemove) {

         cas.removeFsFromIndexes(each);

       }

     }

     return result;

   }

+

+  private void addMarkupAnnotations(String text, Type result, Pattern pattern, JCas jCas,

+          Collection<AnnotationFS> toRemove) {

+    Matcher matcher = pattern.matcher(text);

+    while (matcher.find()) {

+      int begin = matcher.start();

+      int end = matcher.end();

+      MARKUP markup = new MARKUP(jCas, begin, end);

+      markup.addToIndexes();

+      List<AnnotationFS> selectCovered = CasUtil.selectCovered(result, markup);

+      toRemove.addAll(selectCovered);

+    }

+  }

 }

diff --git a/ruta-core/src/main/jflex/org/apache/uima/ruta/seed/SeedLexer.flex b/ruta-core/src/main/jflex/org/apache/uima/ruta/seed/SeedLexer.flex
index 8ebaad8..d4b1a0e 100644
--- a/ruta-core/src/main/jflex/org/apache/uima/ruta/seed/SeedLexer.flex
+++ b/ruta-core/src/main/jflex/org/apache/uima/ruta/seed/SeedLexer.flex
@@ -19,8 +19,6 @@
 

 

 package org.apache.uima.ruta.seed;

-import java.util.*;

-import java.util.regex.*;

 

 import org.apache.uima.cas.text.AnnotationFS;

 import org.apache.uima.jcas.JCas;

@@ -32,7 +30,6 @@
 import org.apache.uima.ruta.type.COMMA;

 import org.apache.uima.ruta.type.CW;

 import org.apache.uima.ruta.type.EXCLAMATION;

-import org.apache.uima.ruta.type.MARKUP;

 import org.apache.uima.ruta.type.NBSP;

 import org.apache.uima.ruta.type.NUM;

 import org.apache.uima.ruta.type.PERIOD;

@@ -68,23 +65,6 @@
 

 <YYINITIAL> {

     

-    \<[/][!][^>]*> {

-                MARKUP t = new MARKUP(cas);

-                t.setBegin(yychar);

-                t.setEnd(yychar + yytext().length());

-                

-                return t;

-    }

-                    

-    \<[!][^>]*> {

-                MARKUP t = new MARKUP(cas);

-                t.setBegin(yychar);

-                t.setEnd(yychar + yytext().length());

-                

-                return t;

-    }

-    

-                                       

     \u00A0|\u202F|\uFEFF|\u2007|\u180E|&nbsp;|&NBSP; {

                 NBSP t = new NBSP(cas);

                 t.setBegin(yychar);

diff --git a/ruta-core/src/main/resources/org/apache/uima/ruta/engine/BasicEngine.xml b/ruta-core/src/main/resources/org/apache/uima/ruta/engine/BasicEngine.xml
index 54ce344..487c3b4 100644
--- a/ruta-core/src/main/resources/org/apache/uima/ruta/engine/BasicEngine.xml
+++ b/ruta-core/src/main/resources/org/apache/uima/ruta/engine/BasicEngine.xml
@@ -320,7 +320,7 @@
         <name>seeders</name>

         <value>

           <array>

-            <string>org.apache.uima.ruta.seed.DefaultSeeder</string>

+            <string>org.apache.uima.ruta.seed.TextSeeder</string>

           </array>

         </value>

       </nameValuePair>

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/WSDictionaryTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/WSDictionaryTest.java
index 1f0c10d..5294374 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/WSDictionaryTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/WSDictionaryTest.java
@@ -40,6 +40,7 @@
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.engine.RutaTestUtils;
 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
+import org.apache.uima.ruta.seed.DefaultSeeder;
 import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 import org.xml.sax.SAXException;
@@ -47,7 +48,8 @@
 public class WSDictionaryTest {
 
   @Test
-  public void test() throws SAXException, ResourceInitializationException, InvalidXMLException, IOException {
+  public void test()
+          throws SAXException, ResourceInitializationException, InvalidXMLException, IOException {
     String document = "Peter Kluegl, Marshall Schor, Joern Kottmann\n";
     document += "PeterKluegl, MarshallSchor, JoernKottmann\n";
     document += "Peter<x>Kluegl, Marshall<x>Schor, Joern<x>Kottmann\n";
@@ -81,7 +83,8 @@
   }
 
   @Test
-  public void testTableWithWS() throws ResourceInitializationException, IOException, InvalidXMLException, SAXException {
+  public void testTableWithWS()
+          throws ResourceInitializationException, IOException, InvalidXMLException, SAXException {
     String document = "Peter Kluegl, Marshall Schor, Joern Kottmann\n";
     document += "PeterKluegl, MarshallSchor, JoernKottmann\n";
     document += "Peter<x>Kluegl, Marshall<x>Schor, Joern<x>Kottmann\n";
@@ -177,6 +180,7 @@
     try {
       Map<String, Object> map = new HashMap<>();
       map.put(RutaEngine.PARAM_DICT_REMOVE_WS, true);
+      map.put(RutaEngine.PARAM_SEEDERS, new String[] { DefaultSeeder.class.getName() });
       Ruta.apply(cas, script, map);
     } catch (Exception e) {
       fail("Failed to execute analysis engine. Reason: " + e.getMessage());
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/AddFilterTypeTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/AddFilterTypeTest.java
index 31fc58a..c7109e6 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/AddFilterTypeTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/AddFilterTypeTest.java
@@ -26,12 +26,12 @@
 public class AddFilterTypeTest {

 

   @Test

-  public void test() {

-    

-    CAS cas = RutaTestUtils.processTestScript(this.getClass());

-    

+  public void test() throws Exception {

+

+    CAS cas = RutaTestUtils.processTestScriptWithDefaultSeeder(this.getClass());

+

     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, " text<br/>");

-       

+

     cas.release();

   }

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/AddRetainTypeTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/AddRetainTypeTest.java
index 9fc6096..2331ac2 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/AddRetainTypeTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/AddRetainTypeTest.java
@@ -26,9 +26,9 @@
 public class AddRetainTypeTest {

 

   @Test

-  public void test() {

+  public void test() throws Exception {

 

-    CAS cas = RutaTestUtils.processTestScript(this.getClass());

+    CAS cas = RutaTestUtils.processTestScriptWithDefaultSeeder(this.getClass());

 

     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, " text<br/>");

 

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/FilterTypeTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/FilterTypeTest.java
index d01727b..663c231 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/FilterTypeTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/FilterTypeTest.java
@@ -26,12 +26,12 @@
 public class FilterTypeTest {

 

   @Test

-  public void test() {

-    

-    CAS cas = RutaTestUtils.processTestScript(this.getClass());

-   

+  public void test() throws Exception {

+

+    CAS cas = RutaTestUtils.processTestScriptWithDefaultSeeder(this.getClass());

+

     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, " text<br/>");

-   

+

     cas.release();

   }

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkTableTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkTableTest.java
index 9886238..3bc6dfd 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkTableTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/MarkTableTest.java
@@ -22,6 +22,7 @@
 import static org.junit.Assert.assertEquals;

 

 import java.util.ArrayList;

+import java.util.LinkedHashMap;

 import java.util.List;

 import java.util.Map;

 import java.util.TreeMap;

@@ -35,19 +36,20 @@
 import org.apache.uima.ruta.engine.RutaEngine;

 import org.apache.uima.ruta.engine.RutaTestUtils;

 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;

+import org.apache.uima.ruta.seed.DefaultSeeder;

 import org.junit.Test;

 

 public class MarkTableTest {

 

   @Test

-  public void test() {

+  public void test() throws Exception {

     String name = this.getClass().getSimpleName();

     String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");

 

     Map<String, String> complexTypes = new TreeMap<String, String>();

     String typeName = "org.apache.uima.Person";

     complexTypes.put(typeName, "uima.tcas.Annotation");

-    

+

     Map<String, List<TestFeature>> features = new TreeMap<String, List<TestFeature>>();

     List<TestFeature> list = new ArrayList<RutaTestUtils.TestFeature>();

     features.put(typeName, list);

@@ -55,15 +57,12 @@
     list.add(new TestFeature(fn1, "", "uima.cas.String"));

     String fn2 = "system";

     list.add(new TestFeature(fn2, "", "uima.cas.String"));

-    

-    CAS cas = null;

-    try {

-      cas = RutaTestUtils.process(namespace + "/" + name + RutaEngine.SCRIPT_FILE_EXTENSION, namespace + "/" + name

-              + ".txt", 50, false, false, complexTypes, features, namespace + "/");

-    } catch (Exception e) {

-      e.printStackTrace();

-      assert (false);

-    }

+

+    Map<String, Object> params = new LinkedHashMap<>();

+    params.put(RutaEngine.PARAM_SEEDERS, new String[] { DefaultSeeder.class.getName() });

+    CAS cas = RutaTestUtils.process(namespace + "/" + name + RutaEngine.SCRIPT_FILE_EXTENSION,

+            namespace + "/" + name + ".txt", params, 50, complexTypes, features, namespace + "/",

+            null);

     Type t = null;

     AnnotationIndex<AnnotationFS> ai = null;

     FSIterator<AnnotationFS> iterator = null;

@@ -74,46 +73,45 @@
     Feature f1 = t.getFeatureByBaseName(fn1);

     Feature f2 = t.getFeatureByBaseName(fn2);

     ai = cas.getAnnotationIndex(t);

-    

+

     assertEquals(6, ai.size());

     iterator = ai.iterator();

-    

+

     next = iterator.next();

     v1 = next.getStringValue(f1);

     v2 = next.getStringValue(f2);

     assertEquals("Peter", v1);

     assertEquals("Ruta", v2);

-    

+

     next = iterator.next();

     v1 = next.getStringValue(f1);

     v2 = next.getStringValue(f2);

     assertEquals("Marshall", v1);

     assertEquals("UIMA", v2);

-    

+

     next = iterator.next();

     v1 = next.getStringValue(f1);

     v2 = next.getStringValue(f2);

     assertEquals("Joern", v1);

     assertEquals("CAS Editor", v2);

-    

+

     next = iterator.next();

     v1 = next.getStringValue(f1);

     v2 = next.getStringValue(f2);

     assertEquals("Peter", v1);

     assertEquals("Ruta", v2);

-    

+

     next = iterator.next();

     v1 = next.getStringValue(f1);

     v2 = next.getStringValue(f2);

     assertEquals("Marshall", v1);

     assertEquals("UIMA", v2);

-    

+

     next = iterator.next();

     v1 = next.getStringValue(f1);

     v2 = next.getStringValue(f2);

     assertEquals("Joern", v1);

-    assertEquals("CAS Editor", v2);    

-    

-    cas.release();    

+    assertEquals("CAS Editor", v2);

+

   }

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/RemoveFilterTypeTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/RemoveFilterTypeTest.java
index 33cf366..c840f3b 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/RemoveFilterTypeTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/RemoveFilterTypeTest.java
@@ -26,9 +26,9 @@
 public class RemoveFilterTypeTest {

 

   @Test

-  public void test() {

+  public void test() throws Exception {

 

-    CAS cas = RutaTestUtils.processTestScript(this.getClass());

+    CAS cas = RutaTestUtils.processTestScriptWithDefaultSeeder(this.getClass());

 

     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "some text");

 

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/RemoveRetainTypeTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/RemoveRetainTypeTest.java
index 81f716d..279cbcc 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/RemoveRetainTypeTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/RemoveRetainTypeTest.java
@@ -26,12 +26,12 @@
 public class RemoveRetainTypeTest {

 

   @Test

-  public void test() {

-    

-    CAS cas = RutaTestUtils.processTestScript(this.getClass());

-    

+  public void test() throws Exception {

+

+    CAS cas = RutaTestUtils.processTestScriptWithDefaultSeeder(this.getClass());

+

     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, " text<br/>");

-       

+

     cas.release();

   }

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/ReplaceTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/ReplaceTest.java
index 93e33f2..6a1c0ca 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/ReplaceTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/ReplaceTest.java
@@ -34,10 +34,10 @@
 public class ReplaceTest {

 

   @Test

-  public void test() {

+  public void test() throws Exception {

 

-    CAS cas = RutaTestUtils.processTestScript(this.getClass());

-    

+    CAS cas = RutaTestUtils.processTestScriptWithDefaultSeeder(this.getClass());

+

     Type t = null;

     AnnotationIndex<AnnotationFS> ai = null;

     FSIterator<AnnotationFS> iterator = null;

@@ -50,7 +50,7 @@
     Feature feature = t.getFeatureByBaseName("replacement");

     String stringValue = afs.getStringValue(feature);

     assertEquals("MARKUP", stringValue);

-    

-    cas.release();    

+

+    cas.release();

   }

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/RetainTypeTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/RetainTypeTest.java
index 47ebf87..c9dd3a9 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/RetainTypeTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/RetainTypeTest.java
@@ -26,13 +26,13 @@
 public class RetainTypeTest {

 

   @Test

-  public void test() {

-    

-    CAS cas = RutaTestUtils.processTestScript(this.getClass());

-        

-    RutaTestUtils.assertAnnotationsEquals(cas, 1, 2, " some"," text");

+  public void test() throws Exception {

+

+    CAS cas = RutaTestUtils.processTestScriptWithDefaultSeeder(this.getClass());

+

+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 2, " some", " text");

     RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "text<br/>");

-    

+

     cas.release();

   }

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift1Test.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift1Test.java
index 48bf2f9..ffca39a 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift1Test.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift1Test.java
@@ -27,9 +27,9 @@
 public class Shift1Test {

 

   @Test

-  public void test() {

+  public void test() throws Exception {

 

-    CAS cas = RutaTestUtils.processTestScript(this.getClass());

+    CAS cas = RutaTestUtils.processTestScriptWithDefaultSeeder(this.getClass());

 

     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "only some text<br/>");

 

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift2Test.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift2Test.java
index dccfabf..1fbf532 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift2Test.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/Shift2Test.java
@@ -23,6 +23,7 @@
 

 import java.util.ArrayList;

 import java.util.HashMap;

+import java.util.LinkedHashMap;

 import java.util.List;

 import java.util.Map;

 import java.util.TreeMap;

@@ -33,22 +34,22 @@
 import org.apache.uima.cas.Type;

 import org.apache.uima.cas.text.AnnotationFS;

 import org.apache.uima.cas.text.AnnotationIndex;

+import org.apache.uima.ruta.engine.Ruta;

 import org.apache.uima.ruta.engine.RutaEngine;

 import org.apache.uima.ruta.engine.RutaTestUtils;

 import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;

+import org.apache.uima.ruta.seed.DefaultSeeder;

 import org.junit.Test;

 

 public class Shift2Test {

 

   @Test

-  public void test() {

-    String name = this.getClass().getSimpleName();

-    String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");

-    

+  public void test() throws Exception {

+

     Map<String, String> complexTypes = new HashMap<String, String>();

     String typeName = "org.apache.uima.FS";

     complexTypes.put(typeName, "uima.tcas.Annotation");

-    

+

     Map<String, List<TestFeature>> features = new TreeMap<String, List<TestFeature>>();

     List<TestFeature> list = new ArrayList<RutaTestUtils.TestFeature>();

     features.put(typeName, list);

@@ -56,15 +57,17 @@
     list.add(new TestFeature(fn1, "", "uima.tcas.Annotation"));

     String fn2 = "lang";

     list.add(new TestFeature(fn2, "", "uima.cas.String"));

-    

-    CAS cas = null;

-    try {

-      cas = RutaTestUtils.process(namespace + "/" + name + RutaEngine.SCRIPT_FILE_EXTENSION, namespace + "/" + name

-              + ".txt", 50, false, false, complexTypes, features, namespace + "/");

-    } catch (Exception e) {

-      e.printStackTrace();

-      assert (false);

-    }

+

+    Map<String, Object> params = new LinkedHashMap<>();

+    params.put(RutaEngine.PARAM_SEEDERS, new String[] { DefaultSeeder.class.getName() });

+

+    CAS cas = RutaTestUtils.getCAS("only some text<br/>", complexTypes, features);

+    String script = "";

+    script += "CREATE(FS, \"doc\" = Document, \"lang\" = \"unknown\");\r\n";

+    script += "RETAINTYPE(MARKUP);\r\n";

+    script += "W{STARTSWITH(FS) -> SHIFT(FS, 1, 2, true)} W+ MARKUP;";

+    Ruta.apply(cas, script, params);

+

     AnnotationIndex<AnnotationFS> ai = null;

     FSIterator<AnnotationFS> iterator = null;

 

@@ -76,11 +79,11 @@
     assertEquals(1, ai.size());

     AnnotationFS next = iterator.next();

     AnnotationFS v1 = (AnnotationFS) next.getFeatureValue(f1);

-    String v2 = next.getStringValue(f2); 

+    String v2 = next.getStringValue(f2);

     assertEquals("only some text<br/>", v1.getCoveredText());

     assertEquals("unknown", v2);

     assertEquals("only some text", next.getCoveredText());

-    

+

     cas.release();

   }

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/action/TrimTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/action/TrimTest.java
index 7cda1d0..19755e5 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/action/TrimTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/action/TrimTest.java
@@ -27,9 +27,9 @@
 public class TrimTest {

 

   @Test

-  public void test() {

+  public void test() throws Exception {

 

-    CAS cas = RutaTestUtils.processTestScript(this.getClass());

+    CAS cas = RutaTestUtils.processTestScriptWithDefaultSeeder(this.getClass());

 

     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "some text");

     RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "some text");

@@ -54,9 +54,9 @@
     } catch (Exception e) {

       e.printStackTrace();

     }

-    

+

     RutaTestUtils.assertAnnotationsEquals(cas, 2, 0);

-    

+

   }

 

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/condition/AfterTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/condition/AfterTest.java
index 0f2bb29..17686bc 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/condition/AfterTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/condition/AfterTest.java
@@ -20,6 +20,7 @@
 package org.apache.uima.ruta.condition;

 

 import org.apache.uima.cas.CAS;

+import org.apache.uima.ruta.engine.Ruta;

 import org.apache.uima.ruta.engine.RutaTestUtils;

 import org.junit.Test;

 

@@ -27,16 +28,40 @@
 

   @Test

   public void test() {

-    

+

     CAS cas = RutaTestUtils.processTestScript(this.getClass());

 

     RutaTestUtils.assertAnnotationsEquals(cas, 1, 2, ".", ".");

-    RutaTestUtils.assertAnnotationsEquals(cas, 2, 8, "So", "every", "word", "from", "here", "on", "is", "marked");

-    RutaTestUtils

-            .assertAnnotationsEquals(cas, 3, 9, "dot", "So", "every", "word", "from", "here", "on", "is", "marked");

-    RutaTestUtils

-            .assertAnnotationsEquals(cas, 4, 9, "dot", "So", "every", "word", "from", "here", "on", "is", "marked");

+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 8, "So", "every", "word", "from", "here", "on",

+            "is", "marked");

+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 9, "dot", "So", "every", "word", "from", "here",

+            "on", "is", "marked");

+    RutaTestUtils.assertAnnotationsEquals(cas, 4, 9, "dot", "So", "every", "word", "from", "here",

+            "on", "is", "marked");

 

-    cas.release();

+  }

+

+  @Test

+  public void testInWindow() throws Exception {

+    String document = "x x . A b 1 . x x";

+    String script = "";

+    script += "PERIOD #{-> T1} PERIOD;";

+    script += "T1->{NUM{AFTER(CW)-> T2};};";

+    script += "T1->{NUM{AFTER(PERIOD)-> T3};};";

+    script += "T1->{SW{AFTER(CW)-> T4};};";

+    script += "T1->{SW{AFTER(SW)-> T5};};";

+    script += "T1->{CW{AFTER(PERIOD)-> T6};};";

+    script += "T1->{CW{AFTER(CW)-> T7};};";

+

+    CAS cas = RutaTestUtils.getCAS(document);

+    Ruta.apply(cas, script);

+

+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "1");

+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 0);

+    RutaTestUtils.assertAnnotationsEquals(cas, 4, 1, "b");

+    RutaTestUtils.assertAnnotationsEquals(cas, 5, 0);

+    RutaTestUtils.assertAnnotationsEquals(cas, 6, 0);

+    RutaTestUtils.assertAnnotationsEquals(cas, 7, 0);

+

   }

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/condition/BeforeTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/condition/BeforeTest.java
index 977b895..838fcdf 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/condition/BeforeTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/condition/BeforeTest.java
@@ -20,6 +20,7 @@
 package org.apache.uima.ruta.condition;

 

 import org.apache.uima.cas.CAS;

+import org.apache.uima.ruta.engine.Ruta;

 import org.apache.uima.ruta.engine.RutaTestUtils;

 import org.junit.Test;

 

@@ -29,13 +30,39 @@
   public void test() {

 

     CAS cas = RutaTestUtils.processTestScript(this.getClass());

-    

-    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "To mark everything before a special annotation");

-    RutaTestUtils.assertAnnotationsEquals(cas, 2, 2, "To mark everything before a special annotation",

+

+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1,

+            "To mark everything before a special annotation");

+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 2,

+            "To mark everything before a special annotation",

             "you need the BEFORE condition of Ruta");

-    RutaTestUtils.assertAnnotationsEquals(cas, 3, 2, "To mark everything before a special annotation",

+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 2,

+            "To mark everything before a special annotation",

             "you need the BEFORE condition of Ruta");

 

-    cas.release();

+  }

+

+  @Test

+  public void testInWindow() throws Exception {

+    String document = "x x . 1 b A . x x";

+    String script = "";

+    script += "PERIOD #{-> T1} PERIOD;";

+    script += "T1->{NUM{BEFORE(CW)-> T2};};";

+    script += "T1->{NUM{BEFORE(PERIOD)-> T3};};";

+    script += "T1->{SW{BEFORE(CW)-> T4};};";

+    script += "T1->{SW{BEFORE(SW)-> T5};};";

+    script += "T1->{CW{BEFORE(PERIOD)-> T6};};";

+    script += "T1->{CW{BEFORE(CW)-> T7};};";

+

+    CAS cas = RutaTestUtils.getCAS(document);

+    Ruta.apply(cas, script);

+

+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "1");

+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 0);

+    RutaTestUtils.assertAnnotationsEquals(cas, 4, 1, "b");

+    RutaTestUtils.assertAnnotationsEquals(cas, 5, 0);

+    RutaTestUtils.assertAnnotationsEquals(cas, 6, 0);

+    RutaTestUtils.assertAnnotationsEquals(cas, 7, 0);

+

   }

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/condition/VoteTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/condition/VoteTest.java
index 605561f..7b0f049 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/condition/VoteTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/condition/VoteTest.java
@@ -20,6 +20,7 @@
 package org.apache.uima.ruta.condition;

 

 import org.apache.uima.cas.CAS;

+import org.apache.uima.ruta.engine.Ruta;

 import org.apache.uima.ruta.engine.RutaTestUtils;

 import org.junit.Test;

 

@@ -30,10 +31,35 @@
 

     CAS cas = RutaTestUtils.processTestScript(this.getClass());

 

-    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "Use the VOTE Condition, to compare the number of occurrences"

-            + " of two different annotations.");

+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1,

+            "Use the VOTE Condition, to compare the number of occurrences"

+                    + " of two different annotations.");

     RutaTestUtils.assertAnnotationsEquals(cas, 2, 0);

-

-    cas.release();

   }

+

+  @Test

+  public void testInWindowOnly() throws Exception {

+

+    String document = "1 2 . A b C d . 3 4";

+

+    String script = "PERIOD #{-> T1} PERIOD;";

+    script += "(CW ANY ANY){->T2};";

+    script += "SW{->T3};";

+    script += "\"b\"{->T4};";

+    script += "T1{VOTE(T2,T3)->T5};"; // 1 > 2?

+    script += "T1{-VOTE(T2,T3)->T6};"; // not 1 > 2?

+    script += "T1{VOTE(T2,T4)->T7};"; // 1 > 1?

+    script += "T1{VOTE(T4,T2)->T8};"; // 1 > 1?

+

+    CAS cas = RutaTestUtils.getCAS(document);

+    Ruta.apply(cas, script);

+

+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 2, "A b C", "C d .");

+    RutaTestUtils.assertAnnotationsEquals(cas, 5, 0);

+    RutaTestUtils.assertAnnotationsEquals(cas, 6, 1, "A b C d");

+    RutaTestUtils.assertAnnotationsEquals(cas, 7, 0);

+    RutaTestUtils.assertAnnotationsEquals(cas, 8, 0);

+

+  }

+

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaModifierTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaModifierTest.java
index e3e0af6..0c36ca9 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaModifierTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaModifierTest.java
@@ -24,6 +24,8 @@
 import java.net.URL;

 import java.util.ArrayList;

 import java.util.Collection;

+import java.util.LinkedHashMap;

+import java.util.Map;

 

 import org.apache.uima.UIMAFramework;

 import org.apache.uima.analysis_engine.AnalysisEngine;

@@ -31,6 +33,7 @@
 import org.apache.uima.cas.CAS;

 import org.apache.uima.resource.ResourceSpecifier;

 import org.apache.uima.resource.metadata.TypeSystemDescription;

+import org.apache.uima.ruta.seed.DefaultSeeder;

 import org.apache.uima.util.CasCreationUtils;

 import org.apache.uima.util.XMLInputSource;

 import org.junit.Test;

@@ -42,13 +45,13 @@
     String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");

     URL url = HtmlAnnotator.class.getClassLoader().getResource("Modifier.xml");

     if (url == null) {

-      url = HtmlAnnotator.class.getClassLoader().getResource(

-              "org/apache/uima/ruta/engine/Modifier.xml");

+      url = HtmlAnnotator.class.getClassLoader()

+              .getResource("org/apache/uima/ruta/engine/Modifier.xml");

     }

     XMLInputSource in = new XMLInputSource(url);

     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);

     AnalysisEngineDescription aed = (AnalysisEngineDescription) specifier;

-    

+

     TypeSystemDescription basicTypeSystem = aed.getAnalysisEngineMetaData().getTypeSystem();

     for (int i = 1; i <= 20; i++) {

       basicTypeSystem.addType(RutaTestUtils.TYPE + i, "Type for Testing", "uima.tcas.Annotation");

@@ -62,26 +65,21 @@
     String viewName = "modified_for_testing";

     ae.setConfigParameterValue(RutaModifier.PARAM_OUTPUT_VIEW, viewName);

     ae.reconfigure();

-    

+

     String scriptName = this.getClass().getSimpleName();

-    CAS cas = null;

-    try {

-      cas = RutaTestUtils.process(namespace + "/" + scriptName + RutaEngine.SCRIPT_FILE_EXTENSION, namespace + "/test.html", 50);

-    } catch (Exception e) {

-      e.printStackTrace();

-      assert (false);

-    }

+    Map<String, Object> params = new LinkedHashMap<>();

+    params.put(RutaEngine.PARAM_SEEDERS, new String[] { DefaultSeeder.class.getName() });

+    CAS cas = RutaTestUtils.process(namespace + "/" + scriptName + RutaEngine.SCRIPT_FILE_EXTENSION,

+            namespace + "/test.html", params, 50);

     ae.process(cas);

-    

+

     CAS modifiedView = cas.getView(viewName);

     String text = modifiedView.getDocumentText();

-    

-    assertEquals("start of bodynormal BOLDend of body" , text);

-    

-    

+

+    assertEquals("start of bodynormal BOLDend of body", text);

+

     cas.release();

     ae.destroy();

   }

 

-  

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/engine/TestRutaInferenceVisitor.java b/ruta-core/src/test/java/org/apache/uima/ruta/engine/TestRutaInferenceVisitor.java
index 4988241..5cf4ca5 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/engine/TestRutaInferenceVisitor.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/engine/TestRutaInferenceVisitor.java
@@ -40,7 +40,6 @@
   public void endVisit(RutaElement element, ScriptApply result) {

     throw new NotImplementedException("Not supported.");

   }

-

   @Override

   public void finished(RutaStream stream, List<RutaInferenceVisitor> visitors) {

     throw new NotImplementedException("Not supported.");

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/rule/ComposedRuleElementTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/rule/ComposedRuleElementTest.java
new file mode 100644
index 0000000..48a2b50
--- /dev/null
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/rule/ComposedRuleElementTest.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.ruta.rule;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.ruta.engine.Ruta;
+import org.apache.uima.ruta.engine.RutaTestUtils;
+import org.junit.Test;
+
+public class ComposedRuleElementTest {
+
+  @Test
+  public void testDisjunctiveOnDuplicates() throws Exception {
+    // UIMA-6324
+    String text = "A B A B";
+    String script = "\"A\" {-> T1, T1};\n";
+    script += "\"A\" {-> T2};\n";
+    script += "T1{-> T3};\n";
+    script += "(T1 | T2){-> T4};\n";
+
+    CAS cas = RutaTestUtils.getCAS(text);
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 4, "A", "A", "A", "A");
+    RutaTestUtils.assertAnnotationsEquals(cas, 4, 2, "A", "A");
+  }
+
+  @Test
+  public void testDisjunctiveSequenceCombination() throws Exception {
+    // UIMA-6324
+    String text = "A B A B";
+
+    String script = "\"A\" {-> T1};\n";
+    script += "\"B\" {-> T2};\n";
+    script += "((T2 T1) | ( \"B\" \"A\")){-> T3} W;\n";
+    script += "((T2 T1) | ( \"B\" \"A\")){-> T4} @W;\n";
+
+    CAS cas = RutaTestUtils.getCAS(text);
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 1, "B A");
+    RutaTestUtils.assertAnnotationsEquals(cas, 4, 1, "B A");
+  }
+
+  @Test
+  public void testConjunctiveSequenceCombination() throws Exception {
+    // UIMA-6324
+    String text = "A B A B";
+
+    String script = "\"A\" {-> T1};\n";
+    script += "\"B\" {-> T2};\n";
+    script += "((T2 T1) & ( \"B\" \"A\")){-> T3} W;\n";
+    script += "((T2 T1) & ( \"B\" \"A\")){-> T4} @W;\n";
+
+    CAS cas = RutaTestUtils.getCAS(text);
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 1, "B A");
+    RutaTestUtils.assertAnnotationsEquals(cas, 4, 1, "B A");
+  }
+
+}
diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/rule/LiteralStringMatchTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/rule/LiteralStringMatchTest.java
index 95be43b..2f26966 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/rule/LiteralStringMatchTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/rule/LiteralStringMatchTest.java
@@ -19,9 +19,14 @@
 

 package org.apache.uima.ruta.rule;

 

+import java.util.LinkedHashMap;

+import java.util.Map;

+

 import org.apache.uima.cas.CAS;

 import org.apache.uima.ruta.engine.Ruta;

+import org.apache.uima.ruta.engine.RutaEngine;

 import org.apache.uima.ruta.engine.RutaTestUtils;

+import org.apache.uima.ruta.seed.DefaultSeeder;

 import org.junit.Test;

 

 public class LiteralStringMatchTest {

@@ -57,8 +62,10 @@
     String script = "";

     script += "\"W\"{-> T1};";

 

+    Map<String, Object> params = new LinkedHashMap<>();

+    params.put(RutaEngine.PARAM_SEEDERS, new String[] { DefaultSeeder.class.getName() });

     CAS cas = RutaTestUtils.getCAS(document);

-    Ruta.apply(cas, script);

+    Ruta.apply(cas, script, params);

 

     RutaTestUtils.assertAnnotationsEquals(cas, 1, 0);

   }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/seed/DefaultSeederTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/seed/DefaultSeederTest.java
index e39a59c..551d78e 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/seed/DefaultSeederTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/seed/DefaultSeederTest.java
@@ -21,20 +21,17 @@
 

 import static org.junit.Assert.assertEquals;

 

-import java.net.URL;

+import java.util.LinkedHashMap;

+import java.util.Map;

 

-import org.apache.uima.UIMAFramework;

-import org.apache.uima.analysis_engine.AnalysisEngine;

 import org.apache.uima.cas.CAS;

 import org.apache.uima.cas.FSIterator;

 import org.apache.uima.cas.Type;

 import org.apache.uima.cas.text.AnnotationFS;

 import org.apache.uima.cas.text.AnnotationIndex;

-import org.apache.uima.resource.ResourceSpecifier;

 import org.apache.uima.ruta.engine.Ruta;

 import org.apache.uima.ruta.engine.RutaEngine;

 import org.apache.uima.ruta.engine.RutaTestUtils;

-import org.apache.uima.util.XMLInputSource;

 import org.junit.Assert;

 import org.junit.Test;

 

@@ -42,20 +39,11 @@
 

   @Test

   public void test() throws Exception {

-    URL url = RutaEngine.class.getClassLoader().getResource("BasicEngine.xml");

-    if (url == null) {

-      url = RutaTestUtils.class.getClassLoader()

-              .getResource("org/apache/uima/ruta/engine/BasicEngine.xml");

-    }

-    XMLInputSource in = new XMLInputSource(url);

-    ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);

-    AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);

-    CAS cas = ae.newCAS();

 

     String text = "Different kinds of tokens like ApacheUIMA % &amp; <nomarkup !?.;:,"

             + " and also <FONT CLASS=\"western\" ALIGN=JUSTIFY "

             + "STYLE=\"margin-bottom: 0cm\">html <b>markup</b></FONT>" + "<br/>\n";

-    cas.setDocumentText(text);

+    CAS cas = RutaTestUtils.getCAS(text);

 

     DefaultSeeder seeder = new DefaultSeeder();

     Type type = seeder.seed(text, cas);

@@ -105,7 +93,6 @@
     assertEquals("MARKUP", iterator.next().getType().getShortName());

     assertEquals("BREAK", iterator.next().getType().getShortName());

 

-    cas.release();

   }

 

   @Test

@@ -117,14 +104,15 @@
             + "<a_real_tag value=\"1\">";

     String script = "RETAINTYPE(MARKUP);MARKUP{-> T1};";

     CAS cas = RutaTestUtils.getCAS(document);

-    Ruta.apply(cas, script);

+    Map<String, Object> params = new LinkedHashMap<>();

+    params.put(RutaEngine.PARAM_SEEDERS, new String[] { DefaultSeeder.class.getName() });

+    Ruta.apply(cas, script, params);

 

     RutaTestUtils.assertAnnotationsEquals(cas, 1, 8,

             "<xref ref-type=\"bibr\" rid=\"b35-ehp0113-000220\">", "<sec sec-type=\"methods\">",

             "<sec sectype=\"methods\">", "<sec sec-type=\"methods\">", "<sec sectype=\"methods\">",

             "<sec sectype='methods'>", "<tag-with-dash value=\"1\">", "<a_real_tag value=\"1\">");

 

-    cas.release();

   }

 

   @Test

@@ -141,7 +129,9 @@
     String document = sb.toString();

     String script = "RETAINTYPE(MARKUP);MARKUP{-> T1};";

     CAS cas = RutaTestUtils.getCAS(document);

-    Ruta.apply(cas, script);

+    Map<String, Object> params = new LinkedHashMap<>();

+    params.put(RutaEngine.PARAM_SEEDERS, new String[] { DefaultSeeder.class.getName() });

+    Ruta.apply(cas, script, params);

 

     Type t1 = RutaTestUtils.getTestType(cas, 1);

     AnnotationIndex<AnnotationFS> ai = cas.getAnnotationIndex(t1);

@@ -152,25 +142,23 @@
   }

 

   @Test

-  public void testVerticalTab() throws Exception {

+  public void testMultiLineXmlComment() throws Exception {

 

-    String document = "Some \u000b text.";

-    String script = "RETAINTYPE(WS);\nBREAK{->T1};";

+    String document = "Text text <!-- some \n\r more text --> text text.";

+    String script = "ALL{-> T1};\n";

+    script += "ADDRETAINTYPE(MARKUP);\n";

+    script += "ALL{-> T2};\n";

+    script += "MARKUP{-> T3};\n";

+

     CAS cas = RutaTestUtils.getCAS(document);

-    Ruta.apply(cas, script);

+    Map<String, Object> params = new LinkedHashMap<>();

+    params.put(RutaEngine.PARAM_SEEDERS, new String[] { DefaultSeeder.class.getName() });

+    Ruta.apply(cas, script, params);

 

-    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "\u000b");

-  }

-

-  @Test

-  public void testSpecialChars() throws Exception {

-

-    String document = "Some text 
Dr.";

-    String script = "RETAINTYPE(WS);\nBREAK{-> T1};";

-    CAS cas = RutaTestUtils.getCAS(document);

-    Ruta.apply(cas, script);

-

-    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "
");

+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 5, "Text", "text", "text", "text", ".");

+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 6, "Text", "text", "<!-- some \n\r more text -->",

+            "text", "text", ".");

+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 1, "<!-- some \n\r more text -->");

   }

 

 }

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/seed/TextSeederTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/seed/TextSeederTest.java
new file mode 100644
index 0000000..50356f9
--- /dev/null
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/seed/TextSeederTest.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.ruta.seed;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.fit.util.JCasUtil;
+import org.apache.uima.ruta.engine.Ruta;
+import org.apache.uima.ruta.engine.RutaEngine;
+import org.apache.uima.ruta.engine.RutaTestUtils;
+import org.apache.uima.ruta.type.MARKUP;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TextSeederTest {
+
+  @Test
+  public void testNoMarkupForXmlComment() throws Exception {
+
+    String document = "Text text <!-- some more text --> text text.";
+    String script = "ALL{-> T1};\n";
+    script += "ADDRETAINTYPE(MARKUP);\n";
+    script += "ALL{-> T2};\n";
+    script += "MARKUP{-> T3};\n";
+
+    CAS cas = RutaTestUtils.getCAS(document);
+    Map<String, Object> params = new LinkedHashMap<>();
+    params.put(RutaEngine.PARAM_SEEDERS, new String[] { TextSeeder.class.getName() });
+    Ruta.apply(cas, script, params);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 15, "Text", "text", "<", "!", "-", "-", "some",
+            "more", "text", "-", "-", ">", "text", "text", ".");
+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 15, "Text", "text", "<", "!", "-", "-", "some",
+            "more", "text", "-", "-", ">", "text", "text", ".");
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 0);
+
+    Assert.assertTrue(JCasUtil.select(cas.getJCas(), MARKUP.class).isEmpty());
+  }
+
+  @Test
+  public void testVerticalTab() throws Exception {
+
+    String document = "Some \u000b text.";
+    String script = "RETAINTYPE(WS);\nBREAK{->T1};";
+    CAS cas = RutaTestUtils.getCAS(document);
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "\u000b");
+  }
+
+  @Test
+  public void testSpecialChars() throws Exception {
+
+    String document = "Some text 
Dr.";
+    String script = "RETAINTYPE(WS);\nBREAK{-> T1};";
+    CAS cas = RutaTestUtils.getCAS(document);
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "
");
+  }
+}
diff --git a/ruta-core/src/test/resources/org/apache/uima/ruta/TypeAliasTestEngine.xml b/ruta-core/src/test/resources/org/apache/uima/ruta/TypeAliasTestEngine.xml
index 310ce33..eef1450 100644
--- a/ruta-core/src/test/resources/org/apache/uima/ruta/TypeAliasTestEngine.xml
+++ b/ruta-core/src/test/resources/org/apache/uima/ruta/TypeAliasTestEngine.xml
@@ -221,7 +221,7 @@
                 <name>seeders</name>
                 <value>
                     <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
+                        <string>org.apache.uima.ruta.seed.TextSeeder</string>
                     </array>
                 </value>
             </nameValuePair>
diff --git a/ruta-core/src/test/resources/org/apache/uima/ruta/action/ConfigureTestEngine.xml b/ruta-core/src/test/resources/org/apache/uima/ruta/action/ConfigureTestEngine.xml
index ed02fcf..c0af92a 100644
--- a/ruta-core/src/test/resources/org/apache/uima/ruta/action/ConfigureTestEngine.xml
+++ b/ruta-core/src/test/resources/org/apache/uima/ruta/action/ConfigureTestEngine.xml
@@ -262,7 +262,7 @@
                 <name>seeders</name>

                 <value>

                     <array>

-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>

+                        <string>org.apache.uima.ruta.seed.TextSeeder</string>

                     </array>

                 </value>

             </nameValuePair>

diff --git a/ruta-core/src/test/resources/org/apache/uima/ruta/action/Shift2Test.ruta b/ruta-core/src/test/resources/org/apache/uima/ruta/action/Shift2Test.ruta
deleted file mode 100644
index cfd9d79..0000000
--- a/ruta-core/src/test/resources/org/apache/uima/ruta/action/Shift2Test.ruta
+++ /dev/null
@@ -1,9 +0,0 @@
-PACKAGE org.apache.uima;

-

-DECLARE T1, T2, T3, T4, T5, T6, T7, T8;

-

-DECLARE Annotation FS (Annotation doc, STRING lang);

-

-CREATE(FS, "doc" = Document, "lang" = "unknown");

-RETAINTYPE(MARKUP);

-W{STARTSWITH(FS) -> SHIFT(FS, 1, 2, true)} W+ MARKUP;

diff --git a/ruta-core/src/test/resources/org/apache/uima/ruta/action/Shift2Test.txt b/ruta-core/src/test/resources/org/apache/uima/ruta/action/Shift2Test.txt
deleted file mode 100644
index 8af1798..0000000
--- a/ruta-core/src/test/resources/org/apache/uima/ruta/action/Shift2Test.txt
+++ /dev/null
@@ -1 +0,0 @@
-only some text<br/>
\ No newline at end of file
diff --git a/ruta-core/src/test/resources/org/apache/uima/ruta/engine/CWEngine.xml b/ruta-core/src/test/resources/org/apache/uima/ruta/engine/CWEngine.xml
index 32f44a5..bd119f3 100644
--- a/ruta-core/src/test/resources/org/apache/uima/ruta/engine/CWEngine.xml
+++ b/ruta-core/src/test/resources/org/apache/uima/ruta/engine/CWEngine.xml
@@ -222,7 +222,7 @@
                 <name>seeders</name>
                 <value>
                     <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
+                        <string>org.apache.uima.ruta.seed.TextSeeder</string>
                     </array>
                 </value>
             </nameValuePair>
diff --git a/ruta-core/src/test/resources/org/apache/uima/ruta/engine/RecursiveConfigureEngine.xml b/ruta-core/src/test/resources/org/apache/uima/ruta/engine/RecursiveConfigureEngine.xml
index d77f483..42e7fb8 100644
--- a/ruta-core/src/test/resources/org/apache/uima/ruta/engine/RecursiveConfigureEngine.xml
+++ b/ruta-core/src/test/resources/org/apache/uima/ruta/engine/RecursiveConfigureEngine.xml
@@ -222,7 +222,7 @@
                 <name>seeders</name>

                 <value>

                     <array>

-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>

+                        <string>org.apache.uima.ruta.seed.TextSeeder</string>

                     </array>

                 </value>

             </nameValuePair>

diff --git a/ruta-core/src/test/resources/org/apache/uima/ruta/engine/SWEngine.xml b/ruta-core/src/test/resources/org/apache/uima/ruta/engine/SWEngine.xml
index 4650f1e..1fcbebf 100644
--- a/ruta-core/src/test/resources/org/apache/uima/ruta/engine/SWEngine.xml
+++ b/ruta-core/src/test/resources/org/apache/uima/ruta/engine/SWEngine.xml
@@ -222,7 +222,7 @@
                 <name>seeders</name>
                 <value>
                     <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
+                        <string>org.apache.uima.ruta.seed.TextSeeder</string>
                     </array>
                 </value>
             </nameValuePair>
diff --git a/ruta-core/src/test/resources/org/apache/uima/ruta/engine/SimpleEngine.xml b/ruta-core/src/test/resources/org/apache/uima/ruta/engine/SimpleEngine.xml
index aa2c89b..40149ea 100644
--- a/ruta-core/src/test/resources/org/apache/uima/ruta/engine/SimpleEngine.xml
+++ b/ruta-core/src/test/resources/org/apache/uima/ruta/engine/SimpleEngine.xml
@@ -222,7 +222,7 @@
                 <name>seeders</name>
                 <value>
                     <array>
-                        <string>org.apache.uima.ruta.seed.DefaultSeeder</string>
+                        <string>org.apache.uima.ruta.seed.TextSeeder</string>
                     </array>
                 </value>
             </nameValuePair>
diff --git a/ruta-docbook/src/docbook/tools.ruta.overview.xml b/ruta-docbook/src/docbook/tools.ruta.overview.xml
index 1bce6ab..ee2a5a0 100644
--- a/ruta-docbook/src/docbook/tools.ruta.overview.xml
+++ b/ruta-docbook/src/docbook/tools.ruta.overview.xml
@@ -1194,8 +1194,8 @@
           <title>seeders</title>

           <para>

             This list of string values refers to implementations of the interface "org.apache.uima.ruta.seed.RutaAnnotationSeeder", 

-            which can be used to automatically add annotations to the CAS. The default value of the parameter is a single seeder, namely "org.apache.uima.ruta.seed.DefaultSeeder"

-            that adds annotations for token classes like CW, MARKUP or SEMICOLON. Remember that additional annotations can also be added with 

+            which can be used to automatically add annotations to the CAS. The default value of the parameter is a single seeder, namely "org.apache.uima.ruta.seed.TextSeeder"

+            that adds annotations for token classes like CW, NUM and SEMICOLON, but not MARKUP. Remember that additional annotations can also be added with 

             an additional engine that is executed by a UIMA Ruta rule.

           </para>

         </section>

diff --git a/ruta-eclipse-update-site/pom.xml b/ruta-eclipse-update-site/pom.xml
index 1d5e184..f92f3b8 100644
--- a/ruta-eclipse-update-site/pom.xml
+++ b/ruta-eclipse-update-site/pom.xml
@@ -24,15 +24,15 @@
   <parent>

     <groupId>org.apache.uima</groupId>

     <artifactId>parent-pom</artifactId>

-    <version>14-SNAPSHOT</version>

+    <version>14</version>

     <relativePath />

   </parent>

-  

-	<artifactId>ruta-eclipse-update-site</artifactId>

-	<packaging>pom</packaging>

-	<version>3.0.1</version>

-  

-	<name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>

+

+  <artifactId>ruta-eclipse-update-site</artifactId>

+  <packaging>pom</packaging>

+  <version>3.0.2-SNAPSHOT</version>

+

+  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>

   <description>The UIMA Ruta Eclipse update site</description>

   <url>${uimaWebsiteUrl}</url>

 

@@ -149,8 +149,8 @@
             <goals>

               <goal>run</goal>

             </goals>

-            <configuration combine.self="override">

-              <target>

+            <configuration>

+              <target combine.self="override">

                 <taskdef classname="net.sf.antcontrib.logic.IfTask" name="if" />

                 

                 <condition property="eclipse.home" value="${uima-maven-build-eclipse-home}">

diff --git a/ruta-ep-addons/pom.xml b/ruta-ep-addons/pom.xml
index e7edc62..61259e7 100644
--- a/ruta-ep-addons/pom.xml
+++ b/ruta-ep-addons/pom.xml
@@ -80,64 +80,64 @@
       <version>${project.parent.version}</version>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.equinox.app</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.111.0,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.ide</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.14.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.resources</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.13.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.11.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.jobs</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.emf.ecore</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.emf.ecore.xmi</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.jface.text</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.15.0,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.equinox.preferences</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.debug.ui</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.1.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/ConstraintSelectView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/ConstraintSelectView.java
index c5e04de..22fbf11 100644
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/ConstraintSelectView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/ConstraintSelectView.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.uima.ruta.cde.ui;
 
+import java.awt.Composite;
+
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IMemento;
 import org.eclipse.ui.IViewSite;
 import org.eclipse.ui.PartInitException;
@@ -55,19 +55,21 @@
     return consSelectComp;
   }
 
+  @Override
   public void saveState(IMemento memento) {
     consSelectComp.saveState(memento);
   }
 
+  @Override
   public void init(IViewSite site, IMemento memento) throws PartInitException {
     this.memento = memento;
     super.init(site, memento);
   }
 
-  // Not sure why we need to add this... but here we go...
+  //Not sure why we need to add this... but here we go...
+  @SuppressWarnings({ "unchecked", "rawtypes" })
   @Override
-  public Object getAdapter(Class aAdapter)
-  {
+  public Object getAdapter(Class aAdapter) {
     return super.getAdapter(aAdapter);
   }
 }
diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/DocumentView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/DocumentView.java
index 4c81e7a..df90668 100644
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/DocumentView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/DocumentView.java
@@ -19,8 +19,9 @@
 
 package org.apache.uima.ruta.cde.ui;
 
+import java.awt.Composite;
+
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IMemento;
 import org.eclipse.ui.IViewSite;
 import org.eclipse.ui.PartInitException;
@@ -35,6 +36,7 @@
     super();
   }
 
+  @Override
   public void createPartControl(Composite parent) {
     this.docComposite = new DocumentSelectComposite(parent, SWT.FILL);
     getSite().setSelectionProvider(docComposite.getViewer());
@@ -44,6 +46,7 @@
     }
   }
 
+  @Override
   public void dispose() {
     super.dispose();
   }
@@ -57,19 +60,22 @@
     return docComposite;
   }
 
+  @Override
   public void saveState(IMemento memento) {
     docComposite.saveState(memento);
   }
 
+  @Override
   public void init(IViewSite site, IMemento memento) throws PartInitException {
     this.memento = memento;
     super.init(site, memento);
   }
-  
-  // Not sure why we need to add this... but here we go...
+
+
+  //Not sure why we need to add this... but here we go...
+  @SuppressWarnings({ "unchecked", "rawtypes" })
   @Override
-  public Object getAdapter(Class aAdapter)
-  {
+  public Object getAdapter(Class aAdapter) {
     return super.getAdapter(aAdapter);
   }
 }
diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/ResultView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/ResultView.java
index 76d7bbb..03a2290 100644
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/ResultView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/cde/ui/ResultView.java
@@ -19,8 +19,9 @@
 

 package org.apache.uima.ruta.cde.ui;

 

+import java.awt.Composite;

+

 import org.eclipse.swt.SWT;

-import org.eclipse.swt.widgets.Composite;

 import org.eclipse.ui.part.ViewPart;

 

 public class ResultView extends ViewPart {

@@ -41,11 +42,11 @@
   public void setFocus() {

     this.resultViewComposite.setFocus();

   }

-  

-  // Not sure why we need to add this... but here we go...

+

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/check/AnnotationCheckView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/check/AnnotationCheckView.java
index 76f3c90..fabe4a8 100644
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/check/AnnotationCheckView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/check/AnnotationCheckView.java
@@ -19,8 +19,9 @@
 

 package org.apache.uima.ruta.check;

 

+import java.awt.Composite;

+

 import org.eclipse.swt.SWT;

-import org.eclipse.swt.widgets.Composite;

 import org.eclipse.ui.IMemento;

 import org.eclipse.ui.IViewSite;

 import org.eclipse.ui.PartInitException;

@@ -66,11 +67,11 @@
     this.memento = memento;

     super.init(site, memento);

   }

-  

-  // Not sure why we need to add this... but here we go...

+

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/apply/ApplyView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/apply/ApplyView.java
index 1f98ccf..ce5a29a 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/apply/ApplyView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/apply/ApplyView.java
@@ -42,10 +42,10 @@
     return result;

   }

 

-  // Not sure why we need to add this... but here we go...

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/createdBy/CreatedByView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/createdBy/CreatedByView.java
index 82d2d85..07e3b99 100644
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/createdBy/CreatedByView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/createdBy/CreatedByView.java
@@ -42,10 +42,10 @@
     return result;

   }

   

-  // Not sure why we need to add this... but here we go...

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/element/ElementView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/element/ElementView.java
index 4b1cbef..e957f0b 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/element/ElementView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/element/ElementView.java
@@ -41,11 +41,11 @@
     }

     return result;

   }

-  

-  // Not sure why we need to add this... but here we go...

+

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/failed/FailedView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/failed/FailedView.java
index 815a1bd..23928bc 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/failed/FailedView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/failed/FailedView.java
@@ -41,11 +41,11 @@
     }

     return result;

   }

-  

-  // Not sure why we need to add this... but here we go...

+

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/inlined/InlinedView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/inlined/InlinedView.java
index 01e37a6..9a4fada 100644
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/inlined/InlinedView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/inlined/InlinedView.java
@@ -41,11 +41,11 @@
     }

     return result;

   }

-  

-  // Not sure why we need to add this... but here we go...

+

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/matched/MatchedView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/matched/MatchedView.java
index fb4f396..8b9b641 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/matched/MatchedView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/matched/MatchedView.java
@@ -41,11 +41,11 @@
     }

     return result;

   }

-  

-  // Not sure why we need to add this... but here we go...

+

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/rulelist/RuleListView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/rulelist/RuleListView.java
index c55959a..bd0c50b 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/rulelist/RuleListView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/rulelist/RuleListView.java
@@ -41,11 +41,11 @@
     }

     return result;

   }

-  

-  // Not sure why we need to add this... but here we go...

+

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/selection/ExplainSelectionView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/selection/ExplainSelectionView.java
index 00e61a1..ba7ccfe 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/selection/ExplainSelectionView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/selection/ExplainSelectionView.java
@@ -41,11 +41,11 @@
     }

     return result;

   }

-  

-  // Not sure why we need to add this... but here we go...

+

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryView.java
index 183f91a..a1c4d99 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryView.java
@@ -19,8 +19,9 @@
 
 package org.apache.uima.ruta.query.ui;
 
+import java.awt.Composite;
+
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IMemento;
 import org.eclipse.ui.IViewSite;
 import org.eclipse.ui.PartInitException;
@@ -53,14 +54,14 @@
 
   @Override
   public void setFocus() {
-    if(viewContent != null) {
+    if (viewContent != null) {
       viewContent.setFocus();
     }
   }
 
   @Override
   public void saveState(IMemento memento) {
-    if(viewContent != null) {
+    if (viewContent != null) {
       viewContent.saveState(memento);
     }
   }
@@ -74,11 +75,11 @@
   public QueryComposite getComposite() {
     return viewContent;
   }
-  
-  // Not sure why we need to add this... but here we go...
+
+  //Not sure why we need to add this... but here we go...
+  @SuppressWarnings({ "unchecked", "rawtypes" })
   @Override
-  public Object getAdapter(Class aAdapter)
-  {
+  public Object getAdapter(Class aAdapter) {
     return super.getAdapter(aAdapter);
   }
 }
diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/statistics/StatisticsView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/statistics/StatisticsView.java
index ce98dfc..3d22126 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/statistics/StatisticsView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/statistics/StatisticsView.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations

  * under the License.

  */

-

 package org.apache.uima.ruta.statistics;

 

 import org.apache.uima.caseditor.editor.AnnotationEditor;

@@ -44,10 +43,10 @@
     return result;

   }

   

-  // Not sure why we need to add this... but here we go...

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/TestPageBookView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/TestPageBookView.java
index e10f9fa..3662b82 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/TestPageBookView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/TestPageBookView.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.uima.ruta.testing.ui.views;
 
 import org.eclipse.core.resources.IResource;
@@ -98,11 +97,11 @@
   protected boolean isImportant(IWorkbenchPart part) {
     return part.getSite().getId().equals("org.apache.uima.ruta.ide.ui.editor.RutaEditor");
   }
-  
-  // Not sure why we need to add this... but here we go...
+
+  //Not sure why we need to add this... but here we go...
+  @SuppressWarnings({ "unchecked", "rawtypes" })
   @Override
-  public Object getAdapter(Class aAdapter)
-  {
+  public Object getAdapter(Class aAdapter) {
     return super.getAdapter(aAdapter);
   }
 }
diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/fn/FalseNegativeView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/fn/FalseNegativeView.java
index b725129..6f8b745 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/fn/FalseNegativeView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/fn/FalseNegativeView.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.uima.ruta.testing.ui.views.fn;
 
 import org.apache.uima.caseditor.editor.AnnotationEditor;
@@ -44,11 +43,11 @@
     }
     return result;
   }
-  
-  // Not sure why we need to add this... but here we go...
+
+  //Not sure why we need to add this... but here we go...
+  @SuppressWarnings({ "unchecked", "rawtypes" })
   @Override
-  public Object getAdapter(Class aAdapter)
-  {
+  public Object getAdapter(Class aAdapter) {
     return super.getAdapter(aAdapter);
   }
 }
diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/fp/FalsePositiveView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/fp/FalsePositiveView.java
index d2211df..c954fc5 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/fp/FalsePositiveView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/fp/FalsePositiveView.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations

  * under the License.

  */

-

 package org.apache.uima.ruta.testing.ui.views.fp;

 

 import org.apache.uima.caseditor.editor.AnnotationEditor;

@@ -45,10 +44,10 @@
     return result;

   }

 

-  // Not sure why we need to add this... but here we go...

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/tp/TruePositiveView.java b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/tp/TruePositiveView.java
index f61e675..3a4125e 100755
--- a/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/tp/TruePositiveView.java
+++ b/ruta-ep-addons/src/main/java/org/apache/uima/ruta/testing/ui/views/tp/TruePositiveView.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations

  * under the License.

  */

-

 package org.apache.uima.ruta.testing.ui.views.tp;

 

 import org.apache.uima.caseditor.editor.AnnotationEditor;

@@ -44,11 +43,11 @@
     }

     return result;

   }

-    

+  

   // Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }

diff --git a/ruta-ep-caseditor/pom.xml b/ruta-ep-caseditor/pom.xml
index b6af557..4a5843f 100644
--- a/ruta-ep-caseditor/pom.xml
+++ b/ruta-ep-caseditor/pom.xml
@@ -49,55 +49,55 @@
       <version>${uimaVersion}</version>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.runtime</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.15.100,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.resources</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.13.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.111.0,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.ide</artifactId>

-      <version>[3.3.0.0,5.0.0)</version>

+      <version>[3.14.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.views</artifactId>

-      <version>[3.3.0.0,5.0.0)</version>

+      <version>[3.9.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>

-      <version>[3.3.0.0,5.0.0)</version>

+      <version>[3.11.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.workbench</artifactId>

-      <version>[3.3.0.0,5.0.0)</version>

+      <version>[3.112.100,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.jface.text</artifactId>

-      <version>[3.3.0.0,5.0.0)</version>

+      <version>[3.15.0,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.equinox.app</artifactId>

       <scope>provided</scope>

     </dependency>

diff --git a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/RutaCasEditorPlugin.java b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/RutaCasEditorPlugin.java
index 3a55098..794c384 100644
--- a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/RutaCasEditorPlugin.java
+++ b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/RutaCasEditorPlugin.java
@@ -47,6 +47,7 @@
    * 

    * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)

    */

+  @Override

   public void start(BundleContext context) throws Exception {

     super.start(context);

     plugin = this;

@@ -57,6 +58,7 @@
    * 

    * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)

    */

+  @Override

   public void stop(BundleContext context) throws Exception {

     plugin = null;

     super.stop(context);

@@ -83,5 +85,4 @@
     return imageDescriptorFromPlugin(PLUGIN_ID, path);

   }

 

-  

 }

diff --git a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/browser/AnnotationBrowserView.java b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/browser/AnnotationBrowserView.java
index f248ab5..bdaa57b 100644
--- a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/browser/AnnotationBrowserView.java
+++ b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/browser/AnnotationBrowserView.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.uima.ruta.caseditor.view.browser;
 
 import org.apache.uima.caseditor.editor.AnnotationEditor;
@@ -51,9 +50,9 @@
   }
 
   // Not sure why we need to add this... but here we go...
+  @SuppressWarnings({ "unchecked", "rawtypes" })
   @Override
-  public Object getAdapter(Class aAdapter)
-  {
+  public Object getAdapter(Class aAdapter) {
     return super.getAdapter(aAdapter);
   }
 }
diff --git a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/html/HtmlView.java b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/html/HtmlView.java
index 2c38bbf..09ca6ab 100644
--- a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/html/HtmlView.java
+++ b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/html/HtmlView.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations

  * under the License.

  */

-

 package org.apache.uima.ruta.caseditor.view.html;

 

 import org.apache.uima.caseditor.editor.AnnotationEditor;

@@ -24,30 +23,35 @@
 import org.apache.uima.caseditor.editor.ICasEditor;

 import org.eclipse.ui.part.IPageBookViewPage;

 

-public class HtmlView extends CasEditorView {

+public class HtmlView

+    extends CasEditorView

+{

 

-	public static final String ID = "org.apache.uima.caseditor.html";

+    public static final String ID = "org.apache.uima.caseditor.html";

 

-	public static final String HTML_SOURCE = "org.apache.uima.caseditor.html.source";

-	

-	public HtmlView() {

-		super("The instance view is currently not available.");

-	}

+    public static final String HTML_SOURCE = "org.apache.uima.caseditor.html.source";

 

-	@Override

-    protected IPageBookViewPage doCreatePage(ICasEditor editor) {

-		IPageBookViewPage result = null;

-		if (editor.getDocument() != null && editor instanceof AnnotationEditor) {

-			HtmlViewPage page = new HtmlViewPage((AnnotationEditor) editor);

-			result = page;

-		}

-		return result;

-	}

+    public HtmlView()

+    {

+        super("The instance view is currently not available.");

+    }

 

-      // Not sure why we need to add this... but here we go...

-      @Override

-      public Object getAdapter(Class aAdapter)

-      {

+    @Override

+    protected IPageBookViewPage doCreatePage(ICasEditor editor)

+    {

+        IPageBookViewPage result = null;

+        if (editor.getDocument() != null && editor instanceof AnnotationEditor) {

+            HtmlViewPage page = new HtmlViewPage((AnnotationEditor) editor);

+            result = page;

+        }

+        return result;

+    }

+

+    // Not sure why we need to add this... but here we go...

+    @SuppressWarnings({ "unchecked", "rawtypes" })

+    @Override

+    public Object getAdapter(Class aAdapter)

+    {

         return super.getAdapter(aAdapter);

-      }

+    }

 }

diff --git a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/selection/SelectionView.java b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/selection/SelectionView.java
index 4d140a9..5a7451c 100644
--- a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/selection/SelectionView.java
+++ b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/selection/SelectionView.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations

  * under the License.

  */

-

 package org.apache.uima.ruta.caseditor.view.selection;

 

 import org.apache.uima.caseditor.editor.AnnotationEditor;

@@ -44,11 +43,11 @@
     }

     return result;

   }

-  

-  // Not sure why we need to add this... but here we go...

+

+  //Not sure why we need to add this... but here we go...

+  @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

-  public Object getAdapter(Class aAdapter)

-  {

+  public Object getAdapter(Class aAdapter) {

     return super.getAdapter(aAdapter);

   }

 }
\ No newline at end of file
diff --git a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/ArrayFeatureTreeNode.java b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/ArrayFeatureTreeNode.java
index 03320ec..13e360c 100644
--- a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/ArrayFeatureTreeNode.java
+++ b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/ArrayFeatureTreeNode.java
@@ -92,7 +92,6 @@
   }
 
   @Override
-  @SuppressWarnings("unchecked")
   public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
 
     if (ArrayFeatureTreeNode.class.equals(adapter)) {
diff --git a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSTreeNode.java b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSTreeNode.java
index dbdfbc8..2b7a305 100644
--- a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSTreeNode.java
+++ b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSTreeNode.java
@@ -123,7 +123,6 @@
   }

 

   @Override

-  @SuppressWarnings("unchecked")

   public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {

     if (FSTreeNode.class.equals(adapter)) {

       return this;

diff --git a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/PrimitiveFeatureTreeNode.java b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/PrimitiveFeatureTreeNode.java
index aa0eaa9..9534a34 100644
--- a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/PrimitiveFeatureTreeNode.java
+++ b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/PrimitiveFeatureTreeNode.java
@@ -57,7 +57,6 @@
     return f.getShortName() + ": " + value;
   }
 
-
   @Override
   public ITreeNode getParent() {
     return parent;
@@ -90,7 +89,6 @@
   }
 
   @Override
-  @SuppressWarnings("unchecked")
   public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
 
     if (PrimitiveFeatureTreeNode.class.equals(adapter)) {
diff --git a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/PrimitiveTreeNode.java b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/PrimitiveTreeNode.java
index f1bd85b..913e2b3 100644
--- a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/PrimitiveTreeNode.java
+++ b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/PrimitiveTreeNode.java
@@ -72,7 +72,6 @@
   }
 
   @Override
-  @SuppressWarnings("unchecked")
   public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
 
     if (PrimitiveTreeNode.class.equals(adapter)) {
diff --git a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeOrderedRootTreeNode.java b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeOrderedRootTreeNode.java
index 9cfac76..4ff9406 100644
--- a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeOrderedRootTreeNode.java
+++ b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeOrderedRootTreeNode.java
@@ -96,7 +96,6 @@
   }
 
   @Override
-  @SuppressWarnings("unchecked")
   public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
 
     if (TypeTreeNode.class.equals(adapter)) {
diff --git a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeTreeNode.java b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeTreeNode.java
index 24786a0..9bfef64 100644
--- a/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeTreeNode.java
+++ b/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeTreeNode.java
@@ -61,7 +61,6 @@
   }
 
   @Override
-  @SuppressWarnings("unchecked")
   public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
 
     if (TypeTreeNode.class.equals(adapter)) {
diff --git a/ruta-ep-core-ext/pom.xml b/ruta-ep-core-ext/pom.xml
index 7516b58..c422ab9 100644
--- a/ruta-ep-core-ext/pom.xml
+++ b/ruta-ep-core-ext/pom.xml
@@ -77,12 +77,12 @@
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.eclipse</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.equinox.app</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.eclipse</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
       <scope>provided</scope>
     </dependency>
diff --git a/ruta-ep-ide-ui/pom.xml b/ruta-ep-ide-ui/pom.xml
index 7a635d5..c2b59ab 100644
--- a/ruta-ep-ide-ui/pom.xml
+++ b/ruta-ep-ide-ui/pom.xml
@@ -46,74 +46,74 @@
 

   <dependencies>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.runtime</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.15.100,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.jobs</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.resources</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.13.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.search</artifactId>

-      <version>[3.2.0,5.0.0)</version>

+      <version>[3.11.400,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.111.0,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.ide</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.14.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.views</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.9.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.console</artifactId>

-      <version>[3.2.0,5.0.0)</version>

+      <version>[3.8.300,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.11.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.jface.text</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.15.0,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.variables</artifactId>

-      <version>[3.2.0,5.0.0)</version>

+      <version>[3.4.300,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.jdt.launching</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.12.0,4.0.0)</version>

       <scope>provided</scope>

       <exclusions>

         <exclusion>

@@ -121,28 +121,28 @@
             The p2 resolver appears to have trouble with this one and tries to download it with 

             "tools" as the classifier.

            -->

-          <groupId>org.eclipse</groupId>

+          <groupId>${eclipseP2RepoId}</groupId>

           <artifactId>org.eclipse.jdt.debug</artifactId>

         </exclusion>

       </exclusions>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.jdt.core</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.16.0,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.jdt.debug.ui</artifactId>

-      <version>[3.2.0,5.0.0)</version>

+      <version>[3.10.100,4.0.0)</version>

       <scope>provided</scope>

       <exclusions>

         <exclusion>

           <!-- 

             The p2 resolver appears to have trouble with the "icu-data" classifier

            -->

-          <groupId>org.eclipse</groupId>

+          <groupId>${eclipseP2RepoId}</groupId>

           <artifactId>com.ibm.icu</artifactId>

         </exclusion>

         <exclusion>

@@ -150,33 +150,33 @@
             The p2 resolver appears to have trouble with this one and tries to download it with 

             "tools" as the classifier.

            -->

-          <groupId>org.eclipse</groupId>

+          <groupId>${eclipseP2RepoId}</groupId>

           <artifactId>org.eclipse.jdt.debug</artifactId>

         </exclusion>

       </exclusions>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.contenttype</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.equinox.preferences</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.equinox.app</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.emf.ecore.xmi</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.filesystem</artifactId>

       <version>[1.0.0,3.0.0)</version>

       <scope>provided</scope>

diff --git a/ruta-ep-ide/pom.xml b/ruta-ep-ide/pom.xml
index 76e7ecf..43f1997 100644
--- a/ruta-ep-ide/pom.xml
+++ b/ruta-ep-ide/pom.xml
@@ -47,46 +47,46 @@
 

   <dependencies>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.runtime</artifactId>

-      <version>[3.3.0,6.0.0)</version>

+      <version>[3.15.100,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.contenttype</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.resources</artifactId>

-      <version>[3.3.0,6.0.0)</version>

+      <version>[3.13.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.core.filesystem</artifactId>

-      <version>[1.0.0,6.0.0)</version>

+      <version>[1.7.200,2.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui</artifactId>

-      <version>[3.3.0,6.0.0)</version>

+      <version>[3.111.0,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.equinox.preferences</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.equinox.app</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.emf.ecore.xmi</artifactId>

       <scope>provided</scope>

     </dependency>

@@ -97,9 +97,9 @@
       <scope>compile</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.jdt.launching</artifactId>

-      <version>[3.3.0,6.0.0)</version>

+      <version>[3.12.0,4.0.0)</version>

       <scope>provided</scope>

       <exclusions>

         <exclusion>

diff --git a/ruta-ep-parent/pom.xml b/ruta-ep-parent/pom.xml
index 89eb05f..5d3384e 100644
--- a/ruta-ep-parent/pom.xml
+++ b/ruta-ep-parent/pom.xml
@@ -52,18 +52,15 @@
   </scm>
 
   <properties>
-    <dltk.version>[3.0.1,6.0.0)</dltk.version>
+    <eclipseP2RepoId>org.eclipse.p2.201812</eclipseP2RepoId>
+    <eclipseP2RepoUrl>https://download.eclipse.org/releases/2018-12/</eclipseP2RepoUrl>
+    <dltk.version>[5.11.0,6.0.0)</dltk.version>
   </properties>
 
   <repositories>
     <repository>
-      <id>org.eclipse</id>
-      <url>http://download.eclipse.org/releases/oxygen/</url>
-      <layout>p2</layout>
-    </repository>
-    <repository>
-      <id>org.eclipse.dltk</id>
-      <url>http://download.eclipse.org/technology/dltk/updates-dev/5.6/</url>
+      <id>${eclipseP2RepoId}</id>
+      <url>${eclipseP2RepoUrl}</url>
       <layout>p2</layout>
     </repository>
   </repositories>
@@ -78,192 +75,133 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.eclipse.dltk</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.dltk.core</artifactId>
       <version>${dltk.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.dltk</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.dltk.ui</artifactId>
       <version>${dltk.version}</version>
       <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <!-- 
+            The p2 resolver appears to have trouble with the "icu-data" classifier
+           -->
+          <groupId>${eclipseP2RepoId}</groupId>
+          <artifactId>com.ibm.icu</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.dltk</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.dltk.debug</artifactId>
       <version>${dltk.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.dltk</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.dltk.annotations</artifactId>
       <version>${dltk.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.dltk</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.dltk.launching</artifactId>
       <version>${dltk.version}</version>
       <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <!-- 
+            The p2 resolver appears to have trouble with the "icu-data" classifier
+           -->
+          <groupId>${eclipseP2RepoId}</groupId>
+          <artifactId>com.ibm.icu</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.dltk</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.dltk.core.manipulation</artifactId>
       <version>${dltk.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.dltk</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.dltk.validators.core</artifactId>
       <version>${dltk.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.dltk</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.dltk.console</artifactId>
       <version>${dltk.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.dltk</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.dltk.formatter</artifactId>
       <version>${dltk.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.dltk</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.dltk.testing</artifactId>
       <version>${dltk.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.eclipse</groupId>
+      <groupId>${eclipseP2RepoId}</groupId>
       <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
-      <version>[3.2.0,5.0.0)</version>
+      <version>[3.109.0,4.0.0)</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
 
   <dependencyManagement>
-    <!-- explicit dependencies for mars.1 -->
+    <!-- explicit dependencies for 2018/12 -->
     <dependencies>
       <dependency>
-        <groupId>org.eclipse</groupId>
+        <groupId>${eclipseP2RepoId}</groupId>
         <artifactId>org.eclipse.core.contenttype</artifactId>
-        <version>[3.5.0,4.0.0)</version>
-      </dependency>
-      <!--  
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.core.commands</artifactId>
-        <version>0.11.0</version>
+        <version>[3.7.200,4.0.0)</version>
       </dependency>
       <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.core.di</artifactId>
-        <version>[1.5.0,2.0.0)</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.core.services</artifactId>
-        <version>[2.0.0,3.0.0)</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.bindings</artifactId>
-        <version>0.11.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.di</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.workbench</artifactId>
-        <version>1.3.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.workbench3</artifactId>
-        <version>0.13.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.css.core</artifactId>
-        <version>0.11.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.css.swt</artifactId>
-        <version>0.12.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.css.swt.theme</artifactId>
-        <version>0.10.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.model.workbench</artifactId>
-        <version>[1.1.100,2.0.0)</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.workbench.swt</artifactId>
-        <version>0.13.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.workbench.addons.swt</artifactId>
-        <version>[1.2.0,2.0.0)</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.workbench.renderers.swt</artifactId>
-        <version>0.13.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse</groupId>
-        <artifactId>org.eclipse.e4.ui.widgets</artifactId>
-        <version>[1.1.0,2.0.0)</version>
-      </dependency>
-      -->
-      <dependency>
-        <groupId>org.eclipse</groupId>
+        <groupId>${eclipseP2RepoId}</groupId>
         <artifactId>org.eclipse.emf.ecore</artifactId>
-        <version>[2.11.1,3.0.0)</version>
+        <version>[2.16.0,3.0.0)</version>
       </dependency>
       <dependency>
-        <groupId>org.eclipse</groupId>
+        <groupId>${eclipseP2RepoId}</groupId>
         <artifactId>org.eclipse.emf.ecore.change</artifactId>
-        <version>[2.11.0,3.0.0)</version>
+        <version>[2.13.0,3.0.0)</version>
       </dependency>
       <dependency>
-        <groupId>org.eclipse</groupId>
+        <groupId>${eclipseP2RepoId}</groupId>
         <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
-        <version>[2.11.1,3.0.0)</version>
+        <version>[2.15.0,3.0.0)</version>
       </dependency>
       <dependency>
-        <groupId>org.eclipse</groupId>
+        <groupId>${eclipseP2RepoId}</groupId>
         <artifactId>org.eclipse.equinox.app</artifactId>
-        <version>[1.3.300,2.0.0)</version>
+        <version>[1.4.0,2.0.0)</version>
       </dependency>
       <dependency>
-        <groupId>org.eclipse</groupId>
+        <groupId>${eclipseP2RepoId}</groupId>
         <artifactId>org.eclipse.equinox.common</artifactId>
-        <version>[3.7.0,4.0.0)</version>
+        <version>[3.10.200,4.0.0)</version>
       </dependency>
       <dependency>
-        <groupId>org.eclipse</groupId>
+        <groupId>${eclipseP2RepoId}</groupId>
         <artifactId>org.eclipse.equinox.preferences</artifactId>
-        <version>[3.5.300,4.0.0)</version>
+        <version>[3.7.200,4.0.0)</version>
       </dependency>
       <dependency>
-        <groupId>org.eclipse</groupId>
+        <groupId>${eclipseP2RepoId}</groupId>
         <artifactId>org.eclipse.core.jobs</artifactId>
-        <version>[3.7.0,4.0.0)</version>
+        <version>[3.10.200,4.0.0)</version>
       </dependency>
       <dependency>
         <groupId>org.w3c.css</groupId>
diff --git a/ruta-ep-textruler/pom.xml b/ruta-ep-textruler/pom.xml
index 39a5ba5..688b949 100644
--- a/ruta-ep-textruler/pom.xml
+++ b/ruta-ep-textruler/pom.xml
@@ -62,36 +62,36 @@
       <version>${project.parent.version}</version>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.equinox.app</artifactId>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.jface.text</artifactId>

-      <version>[3.3.0.0,5.0.0)</version>

+      <version>[3.15.0,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.11.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.editors</artifactId>

-      <version>[3.3.0,5.0.0)</version>

+      <version>[3.11.300,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.ui.views</artifactId>

-      <version>[3.3.0.0,5.0.0)</version>

+      <version>[3.9.200,4.0.0)</version>

       <scope>provided</scope>

     </dependency>

     <dependency>

-      <groupId>org.eclipse</groupId>

+      <groupId>${eclipseP2RepoId}</groupId>

       <artifactId>org.eclipse.emf.ecore.xmi</artifactId>

       <scope>provided</scope>

     </dependency>