Added tokenizeLine() migration.

Change-Id: Iaa4af2fb56a2181409784e2e3d88809d11238b4a
diff --git a/plugins/org.eclipse.acceleo.aql.migration/src/org/eclipse/acceleo/aql/migration/converters/ExpressionConverter.java b/plugins/org.eclipse.acceleo.aql.migration/src/org/eclipse/acceleo/aql/migration/converters/ExpressionConverter.java
index 6fec26f..4394d97 100644
--- a/plugins/org.eclipse.acceleo.aql.migration/src/org/eclipse/acceleo/aql/migration/converters/ExpressionConverter.java
+++ b/plugins/org.eclipse.acceleo.aql.migration/src/org/eclipse/acceleo/aql/migration/converters/ExpressionConverter.java
@@ -384,6 +384,8 @@
 			res = convertRemoveAllCall(input);

 		} else if (isSelectByKindOrTypeCall(input)) {

 			res = convertSelectByKindOrTypeCall(input);

+		} else if (isTokenizeLineCall(input)) {

+			res = convertTokenizeLineCall(input);

 		} else {

 			Call output = OperationUtils.createCall(input);

 			output.getArguments().add((Expression)convert(input.getSource()));

@@ -394,6 +396,29 @@
 		return res;

 	}

 

+	private Expression convertTokenizeLineCall(OperationCallExp input) {

+		final Call res = AstFactory.eINSTANCE.createCall();

+		res.setType(CallType.CALLSERVICE);

+		res.setServiceName("tokenize");

+		res.getArguments().add((Expression)convert(input.getSource()));

+

+		final StringLiteral stringLiteral = AstFactory.eINSTANCE.createStringLiteral();

+		stringLiteral.setValue("");

+		final Call lineSeparator = AstFactory.eINSTANCE.createCall();

+		lineSeparator.setType(CallType.CALLSERVICE);

+		lineSeparator.setServiceName("lineSeparator");

+		lineSeparator.getArguments().add(stringLiteral);

+		res.getArguments().add(lineSeparator);

+

+		return res;

+	}

+

+	private boolean isTokenizeLineCall(OperationCallExp input) {

+		final EOperation referredOperation = input.getReferredOperation();

+		return referredOperation != null && ("tokenizeLine".equals(referredOperation.getName()))

+				&& "oclstdlib_String_Class".equals(((EClass)referredOperation.eContainer()).getName());

+	}

+

 	private Expression convertSelectByKindOrTypeCall(OperationCallExp input) {

 		final Call res = AstFactory.eINSTANCE.createCall();

 		res.setType(CallType.COLLECTIONCALL);

@@ -425,10 +450,12 @@
 

 	private boolean isSelectByKindOrTypeCall(OperationCallExp input) {

 		final EOperation referredOperation = input.getReferredOperation();

+		// CHECKSTYLE:OFF

 		return referredOperation != null && ("selectByKind".equals(referredOperation.getName())

 				|| "selectByType".equals(referredOperation.getName())) && ("OrderedSet(T)_Class".equals(

 						((EClass)referredOperation.eContainer()).getName()) || "Sequence(T)_Class".equals(

 								((EClass)referredOperation.eContainer()).getName()));

+		// CHECKSTYLE:ON

 	}

 

 	private Expression convertRemoveAllCall(OperationCallExp input) {

diff --git a/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/src/resources/services/stringServices/generated/testServices b/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/src/resources/services/stringServices/generated/testServices
index 75121e8..57544e0 100644
--- a/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/src/resources/services/stringServices/generated/testServices
+++ b/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/src/resources/services/stringServices/generated/testServices
@@ -41,5 +41,8 @@
 @Test 'test'.tokenize() => test
 @Test 'test'.at(2) => e
 @Test 'test'.characters() => test
+@Test 'lineOne' + lineSeparator() + 'lineTwo' + lineSeparator() + 'LineThree'.tokenizeLine()->sep(', ') => lineOne
+lineTwo
+LineThree
 @Test '*' + lineSeparator() + '*' => *
 *
diff --git a/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/src/resources/services/stringServices/stringServices.mtl b/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/src/resources/services/stringServices/stringServices.mtl
index 68ae29d..381da9a 100644
--- a/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/src/resources/services/stringServices/stringServices.mtl
+++ b/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/src/resources/services/stringServices/stringServices.mtl
@@ -64,7 +64,7 @@
 @Test 'test'.tokenize() => ['test'.tokenize()/]
 @Test 'test'.at(2) => ['test'.at(2)/]
 @Test 'test'.characters() => ['test'.characters()/]
-[comment]A4-UNSUPPORTED tokenizeLine[/comment]
+@Test 'lineOne' + lineSeparator() + 'lineTwo' + lineSeparator() + 'LineThree'.tokenizeLine()->sep(', ') => ['lineOne' + lineSeparator() + 'lineTwo' + lineSeparator() + 'LineThree'.tokenizeLine()->sep(', ')/]
 [comment]A4-UNSUPPORTED strtok[/comment]
 [comment]A4-UNSUPPORTED substituteFirst[/comment]
 [comment]A4-UNSUPPORTED replaceFirst[/comment]
diff --git a/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/PASS b/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/PASS
index 61c602a..0458662 100644
--- a/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/PASS
+++ b/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/PASS
@@ -54,6 +54,7 @@
 	'test'.tokenize()
 	'test'.at(2)
 	'test'.characters()
+	'lineOne' + lineSeparator() + 'lineTwo' + lineSeparator() + 'LineThree'.tokenizeLine()->sep(', ')
 	'*' + lineSeparator() + '*'
 	'a' + 'b'
 	'a' + 'b' + 'c'
diff --git a/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/TODO b/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/TODO
index cccfadc..9bd31a6 100644
--- a/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/TODO
+++ b/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/TODO
@@ -24,7 +24,6 @@
 	 replaceFirst
 	 strtok
 	 substituteFirst
-	 tokenizeLine
 acceleoServices
 	(LOT1) TODO implement getProperties
 numericServices
diff --git a/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/generated/testServices-expected.txt b/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/generated/testServices-expected.txt
index 75121e8..57544e0 100644
--- a/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/generated/testServices-expected.txt
+++ b/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/generated/testServices-expected.txt
@@ -41,5 +41,8 @@
 @Test 'test'.tokenize() => test
 @Test 'test'.at(2) => e
 @Test 'test'.characters() => test
+@Test 'lineOne' + lineSeparator() + 'lineTwo' + lineSeparator() + 'LineThree'.tokenizeLine()->sep(', ') => lineOne
+lineTwo
+LineThree
 @Test '*' + lineSeparator() + '*' => *
 *
diff --git a/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices-expected.mtl b/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices-expected.mtl
index 036dfb3..b034da2 100644
--- a/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices-expected.mtl
+++ b/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices-expected.mtl
@@ -62,6 +62,7 @@
     @Test 'test'.tokenize() => ['test'.tokenize()/]
     @Test 'test'.at(2) => ['test'.at(2)/]
     @Test 'test'.characters() => ['test'.characters()/]
+    @Test 'lineOne' + lineSeparator() + 'lineTwo' + lineSeparator() + 'LineThree'.tokenizeLine()->sep(', ') => ['lineOne' + p.lineSeparator() + 'lineTwo' + p.lineSeparator() + 'LineThree'.tokenize(''.lineSeparator())->sep(', ')/]
     @Test '*' + lineSeparator() + '*' => ['*' + p.lineSeparator() + '*'/]
   [/file]
   
diff --git a/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices-origin.mtl b/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices-origin.mtl
index 68ae29d..381da9a 100644
--- a/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices-origin.mtl
+++ b/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices-origin.mtl
@@ -64,7 +64,7 @@
 @Test 'test'.tokenize() => ['test'.tokenize()/]
 @Test 'test'.at(2) => ['test'.at(2)/]
 @Test 'test'.characters() => ['test'.characters()/]
-[comment]A4-UNSUPPORTED tokenizeLine[/comment]
+@Test 'lineOne' + lineSeparator() + 'lineTwo' + lineSeparator() + 'LineThree'.tokenizeLine()->sep(', ') => ['lineOne' + lineSeparator() + 'lineTwo' + lineSeparator() + 'LineThree'.tokenizeLine()->sep(', ')/]
 [comment]A4-UNSUPPORTED strtok[/comment]
 [comment]A4-UNSUPPORTED substituteFirst[/comment]
 [comment]A4-UNSUPPORTED replaceFirst[/comment]
diff --git a/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices.emtl b/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices.emtl
index a22b765..4ef4c1c 100644
--- a/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices.emtl
+++ b/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices.emtl
@@ -535,6 +535,47 @@
           </source>
           <referredOperation xsi:type="ecore:EOperation" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String_Class/characters"/>
         </body>
+        <body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="&#xA;@Test 'lineOne' + lineSeparator() + 'lineTwo' + lineSeparator() + 'LineThree'.tokenizeLine()->sep(', ') => "/>
+        <body xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/oclstdlib_String_Class/+">
+          <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+          <source xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/oclstdlib_String_Class/+">
+            <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+            <source xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/oclstdlib_String_Class/+">
+              <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+              <source xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/oclstdlib_String_Class/+">
+                <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+                <source xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="lineOne">
+                  <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+                </source>
+                <argument xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/oclstdlib_OclAny_Class/lineSeparator">
+                  <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+                  <source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/65">
+                    <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
+                  </source>
+                </argument>
+              </source>
+              <argument xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="lineTwo">
+                <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+              </argument>
+            </source>
+            <argument xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/oclstdlib_OclAny_Class/lineSeparator">
+              <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+              <source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/65">
+                <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
+              </source>
+            </argument>
+          </source>
+          <argument xsi:type="ocl.ecore:OperationCallExp" eType="/19/Sequence(OclAny)" referredOperation="/1/oclstdlib_Collection(T)_Class/sep">
+            <source xsi:type="ocl.ecore:OperationCallExp" eType="/19/Sequence(String)" referredOperation="/1/oclstdlib_String_Class/tokenizeLine">
+              <source xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="LineThree">
+                <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+              </source>
+            </source>
+            <argument xsi:type="ocl.ecore:StringLiteralExp" stringSymbol=", ">
+              <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+            </argument>
+          </argument>
+        </body>
         <body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="&#xA;"/>
         <body xsi:type="ocl.ecore:StringLiteralExp" stringSymbol="@Test '*' + lineSeparator() + '*' => "/>
         <body xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/oclstdlib_String_Class/+">
@@ -546,7 +587,7 @@
             </source>
             <argument xsi:type="ocl.ecore:OperationCallExp" referredOperation="/1/oclstdlib_OclAny_Class/lineSeparator">
               <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
-              <source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/65">
+              <source xsi:type="ocl.ecore:VariableExp" name="self" referredVariable="/66">
                 <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
               </source>
             </argument>
@@ -838,6 +879,10 @@
         <eAnnotations source="MTL non-standard"/>
         <eType xsi:type="ocl.ecore:SequenceType" href="http://www.eclipse.org/acceleo/mtl/3.0/mtlnonstdlib.ecore#//Sequence(String)"/>
       </eOperations>
+      <eOperations name="tokenizeLine">
+        <eAnnotations source="MTL non-standard"/>
+        <eType xsi:type="ocl.ecore:SequenceType" href="http://www.eclipse.org/acceleo/mtl/3.0/mtlnonstdlib.ecore#//Sequence(String)"/>
+      </eOperations>
       <eOperations name="prefix">
         <eAnnotations source="MTL non-standard"/>
         <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
@@ -884,6 +929,13 @@
       <eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
         <references href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/Collection(T)"/>
       </eAnnotations>
+      <eOperations name="sep">
+        <eAnnotations source="MTL non-standard"/>
+        <eType xsi:type="ocl.ecore:SequenceType" href="http://www.eclipse.org/acceleo/mtl/3.0/mtlnonstdlib.ecore#//Sequence(OclAny)"/>
+        <eParameters name="separatorString">
+          <eType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
+        </eParameters>
+      </eOperations>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="oclstdlib_Sequence(T)_Class">
       <eAnnotations source="http://www.eclipse.org/ocl/1.1.0/OCL">
@@ -964,6 +1016,9 @@
     <eClassifiers xsi:type="ocl.ecore:SequenceType" name="Sequence(String)" instanceClassName="java.util.List">
       <elementType xsi:type="ocl.ecore:PrimitiveType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/String"/>
     </eClassifiers>
+    <eClassifiers xsi:type="ocl.ecore:SequenceType" name="Sequence(OclAny)" instanceClassName="java.util.List">
+      <elementType xsi:type="ocl.ecore:AnyType" href="http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore#/0/OclAny"/>
+    </eClassifiers>
   </ecore:EPackage>
   <ocl.ecore:Variable name="self">
     <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
@@ -1128,12 +1183,15 @@
     <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
   </ocl.ecore:Variable>
   <ocl.ecore:Variable name="self">
+    <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
+  </ocl.ecore:Variable>
+  <ocl.ecore:Variable name="self">
     <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
   </ocl.ecore:Variable>
   <ecore:EAnnotation source="positions">
     <eAnnotations source="positions.0" references="/0/test">
       <details key="start" value="67"/>
-      <details key="end" value="4145"/>
+      <details key="end" value="4306"/>
       <details key="line" value="3"/>
     </eAnnotations>
     <eAnnotations source="positions.1" references="/0/test/%">
@@ -1388,7 +1446,7 @@
     </eAnnotations>
     <eAnnotations source="positions.51" references="/0/test/%.3">
       <details key="start" value="1008"/>
-      <details key="end" value="3777"/>
+      <details key="end" value="3938"/>
       <details key="line" value="23"/>
     </eAnnotations>
     <eAnnotations source="positions.52" references="/0/test/%.3/%">
@@ -2188,285 +2246,360 @@
     </eAnnotations>
     <eAnnotations source="positions.211" references="/0/test/%.3/%.86">
       <details key="start" value="3386"/>
-      <details key="end" value="3387"/>
+      <details key="end" value="3494"/>
       <details key="line" value="67"/>
     </eAnnotations>
     <eAnnotations source="positions.212" references="/0/test/%.3/%.87">
-      <details key="start" value="3572"/>
-      <details key="end" value="3609"/>
-      <details key="line" value="71"/>
-    </eAnnotations>
-    <eAnnotations source="positions.213" references="/0/test/%.3/%.88">
-      <details key="start" value="3610"/>
-      <details key="end" value="3637"/>
+      <details key="start" value="3495"/>
+      <details key="end" value="3592"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.214" references="/0/test/%.3/%.88/%">
-      <details key="start" value="3610"/>
-      <details key="end" value="3631"/>
+    <eAnnotations source="positions.213" references="/0/test/%.3/%.87/%">
+      <details key="start" value="3495"/>
+      <details key="end" value="3552"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.215" references="/0/test/%.3/%.88/%/%">
-      <details key="start" value="3610"/>
-      <details key="end" value="3613"/>
+    <eAnnotations source="positions.214" references="/0/test/%.3/%.87/%/%">
+      <details key="start" value="3495"/>
+      <details key="end" value="3534"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.216" references="/0/test/%.3/%.88/%/%.1">
-      <details key="start" value="3616"/>
-      <details key="end" value="3631"/>
+    <eAnnotations source="positions.215" references="/0/test/%.3/%.87/%/%/%">
+      <details key="start" value="3495"/>
+      <details key="end" value="3522"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.217" references="/0/test/%.3/%.88/%/%.1/self">
+    <eAnnotations source="positions.216" references="/0/test/%.3/%.87/%/%/%/%">
+      <details key="start" value="3495"/>
+      <details key="end" value="3504"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.217" references="/0/test/%.3/%.87/%/%/%/%.1">
+      <details key="start" value="3507"/>
+      <details key="end" value="3522"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.218" references="/0/test/%.3/%.87/%/%/%/%.1/self">
       <details key="start" value="-1"/>
       <details key="end" value="-1"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.218" references="/0/test/%.3/%.88/%.1">
-      <details key="start" value="3634"/>
-      <details key="end" value="3637"/>
+    <eAnnotations source="positions.219" references="/0/test/%.3/%.87/%/%/%.1">
+      <details key="start" value="3525"/>
+      <details key="end" value="3534"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.219" references="/0/test/%.3/%.89">
-      <details key="start" value="3639"/>
-      <details key="end" value="3640"/>
+    <eAnnotations source="positions.220" references="/0/test/%.3/%.87/%/%.1">
+      <details key="start" value="3537"/>
+      <details key="end" value="3552"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.221" references="/0/test/%.3/%.87/%/%.1/self">
+      <details key="start" value="-1"/>
+      <details key="end" value="-1"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.222" references="/0/test/%.3/%.87/%.1">
+      <details key="start" value="3555"/>
+      <details key="end" value="3592"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.223" references="/0/test/%.3/%.87/%.1/%">
+      <details key="start" value="3555"/>
+      <details key="end" value="3581"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.224" references="/0/test/%.3/%.87/%.1/%/%">
+      <details key="start" value="3555"/>
+      <details key="end" value="3566"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.225" references="/0/test/%.3/%.87/%.1/%.1">
+      <details key="start" value="3587"/>
+      <details key="end" value="3591"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.226" references="/0/test/%.3/%.88">
+      <details key="start" value="3594"/>
+      <details key="end" value="3595"/>
+      <details key="line" value="68"/>
+    </eAnnotations>
+    <eAnnotations source="positions.227" references="/0/test/%.3/%.89">
+      <details key="start" value="3733"/>
+      <details key="end" value="3770"/>
+      <details key="line" value="71"/>
+    </eAnnotations>
+    <eAnnotations source="positions.228" references="/0/test/%.3/%.90">
+      <details key="start" value="3771"/>
+      <details key="end" value="3798"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.229" references="/0/test/%.3/%.90/%">
+      <details key="start" value="3771"/>
+      <details key="end" value="3792"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.230" references="/0/test/%.3/%.90/%/%">
+      <details key="start" value="3771"/>
+      <details key="end" value="3774"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.231" references="/0/test/%.3/%.90/%/%.1">
+      <details key="start" value="3777"/>
+      <details key="end" value="3792"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.232" references="/0/test/%.3/%.90/%/%.1/self">
+      <details key="start" value="-1"/>
+      <details key="end" value="-1"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.233" references="/0/test/%.3/%.90/%.1">
+      <details key="start" value="3795"/>
+      <details key="end" value="3798"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.234" references="/0/test/%.3/%.91">
+      <details key="start" value="3800"/>
+      <details key="end" value="3801"/>
       <details key="line" value="72"/>
     </eAnnotations>
-    <eAnnotations source="positions.220" references="/0/test/%.3/%.90">
+    <eAnnotations source="positions.235" references="/0/test/%.3/%.92">
       <details key="start" value="1015"/>
       <details key="end" value="1029"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.221" references="/0/test/%.4">
-      <details key="start" value="3778"/>
-      <details key="end" value="3779"/>
+    <eAnnotations source="positions.236" references="/0/test/%.4">
+      <details key="start" value="3939"/>
+      <details key="end" value="3940"/>
       <details key="line" value="74"/>
     </eAnnotations>
-    <eAnnotations source="positions.222" references="/0/test/%.5">
-      <details key="start" value="3779"/>
-      <details key="end" value="4132"/>
+    <eAnnotations source="positions.237" references="/0/test/%.5">
+      <details key="start" value="3940"/>
+      <details key="end" value="4293"/>
       <details key="line" value="75"/>
     </eAnnotations>
-    <eAnnotations source="positions.223" references="/0/test/%.5/%">
-      <details key="start" value="3805"/>
-      <details key="end" value="3824"/>
+    <eAnnotations source="positions.238" references="/0/test/%.5/%">
+      <details key="start" value="3966"/>
+      <details key="end" value="3985"/>
       <details key="line" value="76"/>
     </eAnnotations>
-    <eAnnotations source="positions.224" references="/0/test/%.5/%.1">
-      <details key="start" value="3825"/>
-      <details key="end" value="3834"/>
+    <eAnnotations source="positions.239" references="/0/test/%.5/%.1">
+      <details key="start" value="3986"/>
+      <details key="end" value="3995"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.225" references="/0/test/%.5/%.1/%">
-      <details key="start" value="3825"/>
-      <details key="end" value="3828"/>
+    <eAnnotations source="positions.240" references="/0/test/%.5/%.1/%">
+      <details key="start" value="3986"/>
+      <details key="end" value="3989"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.226" references="/0/test/%.5/%.1/%.1">
-      <details key="start" value="3831"/>
-      <details key="end" value="3834"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.227" references="/0/test/%.5/%.2">
-      <details key="start" value="3836"/>
-      <details key="end" value="3862"/>
-      <details key="line" value="77"/>
-    </eAnnotations>
-    <eAnnotations source="positions.228" references="/0/test/%.5/%.3">
-      <details key="start" value="3863"/>
-      <details key="end" value="3878"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.229" references="/0/test/%.5/%.3/%">
-      <details key="start" value="3863"/>
-      <details key="end" value="3872"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.230" references="/0/test/%.5/%.3/%/%">
-      <details key="start" value="3863"/>
-      <details key="end" value="3866"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.231" references="/0/test/%.5/%.3/%/%.1">
-      <details key="start" value="3869"/>
-      <details key="end" value="3872"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.232" references="/0/test/%.5/%.3/%.1">
-      <details key="start" value="3875"/>
-      <details key="end" value="3878"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.233" references="/0/test/%.5/%.4">
-      <details key="start" value="3880"/>
-      <details key="end" value="3903"/>
-      <details key="line" value="78"/>
-    </eAnnotations>
-    <eAnnotations source="positions.234" references="/0/test/%.5/%.5">
-      <details key="start" value="3904"/>
-      <details key="end" value="3916"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.235" references="/0/test/%.5/%.5/%">
-      <details key="start" value="3904"/>
-      <details key="end" value="3907"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.236" references="/0/test/%.5/%.5/%.1">
-      <details key="start" value="3910"/>
-      <details key="end" value="3916"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.237" references="/0/test/%.5/%.6">
-      <details key="start" value="3918"/>
-      <details key="end" value="3947"/>
-      <details key="line" value="79"/>
-    </eAnnotations>
-    <eAnnotations source="positions.238" references="/0/test/%.5/%.7">
-      <details key="start" value="3948"/>
-      <details key="end" value="3966"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.239" references="/0/test/%.5/%.7/%">
-      <details key="start" value="3948"/>
-      <details key="end" value="3960"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.240" references="/0/test/%.5/%.7/%/%">
-      <details key="start" value="3948"/>
-      <details key="end" value="3951"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.241" references="/0/test/%.5/%.7/%/%.1">
-      <details key="start" value="3954"/>
-      <details key="end" value="3960"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.242" references="/0/test/%.5/%.7/%.1">
-      <details key="start" value="3963"/>
-      <details key="end" value="3966"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.243" references="/0/test/%.5/%.8">
-      <details key="start" value="3968"/>
-      <details key="end" value="3991"/>
-      <details key="line" value="80"/>
-    </eAnnotations>
-    <eAnnotations source="positions.244" references="/0/test/%.5/%.9">
-      <details key="start" value="3992"/>
-      <details key="end" value="4004"/>
-      <details key="line" value="0"/>
-    </eAnnotations>
-    <eAnnotations source="positions.245" references="/0/test/%.5/%.9/%">
+    <eAnnotations source="positions.241" references="/0/test/%.5/%.1/%.1">
       <details key="start" value="3992"/>
       <details key="end" value="3995"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.246" references="/0/test/%.5/%.9/%.1">
-      <details key="start" value="3998"/>
-      <details key="end" value="4004"/>
+    <eAnnotations source="positions.242" references="/0/test/%.5/%.2">
+      <details key="start" value="3997"/>
+      <details key="end" value="4023"/>
+      <details key="line" value="77"/>
+    </eAnnotations>
+    <eAnnotations source="positions.243" references="/0/test/%.5/%.3">
+      <details key="start" value="4024"/>
+      <details key="end" value="4039"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.247" references="/0/test/%.5/%.9/%.1/p">
-      <details key="start" value="3998"/>
-      <details key="end" value="3999"/>
+    <eAnnotations source="positions.244" references="/0/test/%.5/%.3/%">
+      <details key="start" value="4024"/>
+      <details key="end" value="4033"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.248" references="/0/test/%.5/%.10">
-      <details key="start" value="4006"/>
-      <details key="end" value="4035"/>
-      <details key="line" value="81"/>
-    </eAnnotations>
-    <eAnnotations source="positions.249" references="/0/test/%.5/%.11">
-      <details key="start" value="4036"/>
-      <details key="end" value="4054"/>
+    <eAnnotations source="positions.245" references="/0/test/%.5/%.3/%/%">
+      <details key="start" value="4024"/>
+      <details key="end" value="4027"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.250" references="/0/test/%.5/%.11/%">
-      <details key="start" value="4036"/>
-      <details key="end" value="4048"/>
+    <eAnnotations source="positions.246" references="/0/test/%.5/%.3/%/%.1">
+      <details key="start" value="4030"/>
+      <details key="end" value="4033"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.251" references="/0/test/%.5/%.11/%/%">
+    <eAnnotations source="positions.247" references="/0/test/%.5/%.3/%.1">
       <details key="start" value="4036"/>
       <details key="end" value="4039"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.252" references="/0/test/%.5/%.11/%/%.1">
-      <details key="start" value="4042"/>
-      <details key="end" value="4048"/>
+    <eAnnotations source="positions.248" references="/0/test/%.5/%.4">
+      <details key="start" value="4041"/>
+      <details key="end" value="4064"/>
+      <details key="line" value="78"/>
+    </eAnnotations>
+    <eAnnotations source="positions.249" references="/0/test/%.5/%.5">
+      <details key="start" value="4065"/>
+      <details key="end" value="4077"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.253" references="/0/test/%.5/%.11/%/%.1/p">
-      <details key="start" value="4042"/>
-      <details key="end" value="4043"/>
+    <eAnnotations source="positions.250" references="/0/test/%.5/%.5/%">
+      <details key="start" value="4065"/>
+      <details key="end" value="4068"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.254" references="/0/test/%.5/%.11/%.1">
-      <details key="start" value="4051"/>
-      <details key="end" value="4054"/>
+    <eAnnotations source="positions.251" references="/0/test/%.5/%.5/%.1">
+      <details key="start" value="4071"/>
+      <details key="end" value="4077"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.255" references="/0/test/%.5/%.12">
-      <details key="start" value="4056"/>
-      <details key="end" value="4094"/>
+    <eAnnotations source="positions.252" references="/0/test/%.5/%.6">
+      <details key="start" value="4079"/>
+      <details key="end" value="4108"/>
+      <details key="line" value="79"/>
+    </eAnnotations>
+    <eAnnotations source="positions.253" references="/0/test/%.5/%.7">
+      <details key="start" value="4109"/>
+      <details key="end" value="4127"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.254" references="/0/test/%.5/%.7/%">
+      <details key="start" value="4109"/>
+      <details key="end" value="4121"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.255" references="/0/test/%.5/%.7/%/%">
+      <details key="start" value="4109"/>
+      <details key="end" value="4112"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.256" references="/0/test/%.5/%.7/%/%.1">
+      <details key="start" value="4115"/>
+      <details key="end" value="4121"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.257" references="/0/test/%.5/%.7/%.1">
+      <details key="start" value="4124"/>
+      <details key="end" value="4127"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.258" references="/0/test/%.5/%.8">
+      <details key="start" value="4129"/>
+      <details key="end" value="4152"/>
+      <details key="line" value="80"/>
+    </eAnnotations>
+    <eAnnotations source="positions.259" references="/0/test/%.5/%.9">
+      <details key="start" value="4153"/>
+      <details key="end" value="4165"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.260" references="/0/test/%.5/%.9/%">
+      <details key="start" value="4153"/>
+      <details key="end" value="4156"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.261" references="/0/test/%.5/%.9/%.1">
+      <details key="start" value="4159"/>
+      <details key="end" value="4165"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.262" references="/0/test/%.5/%.9/%.1/p">
+      <details key="start" value="4159"/>
+      <details key="end" value="4160"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.263" references="/0/test/%.5/%.10">
+      <details key="start" value="4167"/>
+      <details key="end" value="4196"/>
+      <details key="line" value="81"/>
+    </eAnnotations>
+    <eAnnotations source="positions.264" references="/0/test/%.5/%.11">
+      <details key="start" value="4197"/>
+      <details key="end" value="4215"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.265" references="/0/test/%.5/%.11/%">
+      <details key="start" value="4197"/>
+      <details key="end" value="4209"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.266" references="/0/test/%.5/%.11/%/%">
+      <details key="start" value="4197"/>
+      <details key="end" value="4200"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.267" references="/0/test/%.5/%.11/%/%.1">
+      <details key="start" value="4203"/>
+      <details key="end" value="4209"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.268" references="/0/test/%.5/%.11/%/%.1/p">
+      <details key="start" value="4203"/>
+      <details key="end" value="4204"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.269" references="/0/test/%.5/%.11/%.1">
+      <details key="start" value="4212"/>
+      <details key="end" value="4215"/>
+      <details key="line" value="0"/>
+    </eAnnotations>
+    <eAnnotations source="positions.270" references="/0/test/%.5/%.12">
+      <details key="start" value="4217"/>
+      <details key="end" value="4255"/>
       <details key="line" value="82"/>
     </eAnnotations>
-    <eAnnotations source="positions.256" references="/0/test/%.5/%.13">
-      <details key="start" value="4095"/>
-      <details key="end" value="4122"/>
+    <eAnnotations source="positions.271" references="/0/test/%.5/%.13">
+      <details key="start" value="4256"/>
+      <details key="end" value="4283"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.257" references="/0/test/%.5/%.13/%">
-      <details key="start" value="4095"/>
-      <details key="end" value="4113"/>
+    <eAnnotations source="positions.272" references="/0/test/%.5/%.13/%">
+      <details key="start" value="4256"/>
+      <details key="end" value="4274"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.258" references="/0/test/%.5/%.13/%/%">
-      <details key="start" value="4095"/>
-      <details key="end" value="4107"/>
+    <eAnnotations source="positions.273" references="/0/test/%.5/%.13/%/%">
+      <details key="start" value="4256"/>
+      <details key="end" value="4268"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.259" references="/0/test/%.5/%.13/%/%/%">
-      <details key="start" value="4095"/>
-      <details key="end" value="4098"/>
+    <eAnnotations source="positions.274" references="/0/test/%.5/%.13/%/%/%">
+      <details key="start" value="4256"/>
+      <details key="end" value="4259"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.260" references="/0/test/%.5/%.13/%/%/%.1">
-      <details key="start" value="4101"/>
-      <details key="end" value="4107"/>
+    <eAnnotations source="positions.275" references="/0/test/%.5/%.13/%/%/%.1">
+      <details key="start" value="4262"/>
+      <details key="end" value="4268"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.261" references="/0/test/%.5/%.13/%/%/%.1/p">
-      <details key="start" value="4101"/>
-      <details key="end" value="4102"/>
+    <eAnnotations source="positions.276" references="/0/test/%.5/%.13/%/%/%.1/p">
+      <details key="start" value="4262"/>
+      <details key="end" value="4263"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.262" references="/0/test/%.5/%.13/%/%.1">
-      <details key="start" value="4110"/>
-      <details key="end" value="4113"/>
+    <eAnnotations source="positions.277" references="/0/test/%.5/%.13/%/%.1">
+      <details key="start" value="4271"/>
+      <details key="end" value="4274"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.263" references="/0/test/%.5/%.13/%.1">
-      <details key="start" value="4116"/>
-      <details key="end" value="4122"/>
+    <eAnnotations source="positions.278" references="/0/test/%.5/%.13/%.1">
+      <details key="start" value="4277"/>
+      <details key="end" value="4283"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.264" references="/0/test/%.5/%.14">
-      <details key="start" value="4124"/>
-      <details key="end" value="4125"/>
+    <eAnnotations source="positions.279" references="/0/test/%.5/%.14">
+      <details key="start" value="4285"/>
+      <details key="end" value="4286"/>
       <details key="line" value="83"/>
     </eAnnotations>
-    <eAnnotations source="positions.265" references="/0/test/%.5/%.15">
-      <details key="start" value="3786"/>
-      <details key="end" value="3795"/>
+    <eAnnotations source="positions.280" references="/0/test/%.5/%.15">
+      <details key="start" value="3947"/>
+      <details key="end" value="3956"/>
       <details key="line" value="0"/>
     </eAnnotations>
-    <eAnnotations source="positions.266" references="/0/test/%.6">
-      <details key="start" value="4133"/>
-      <details key="end" value="4134"/>
+    <eAnnotations source="positions.281" references="/0/test/%.6">
+      <details key="start" value="4294"/>
+      <details key="end" value="4295"/>
       <details key="line" value="84"/>
     </eAnnotations>
-    <eAnnotations source="positions.267" references="/0/test/p">
+    <eAnnotations source="positions.282" references="/0/test/p">
       <details key="start" value="89"/>
       <details key="end" value="101"/>
       <details key="line" value="3"/>
diff --git a/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices.mtl b/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices.mtl
index 036dfb3..b034da2 100644
--- a/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices.mtl
+++ b/tests/org.eclipse.acceleo.aql.migration.tests/resources/services/stringServices/stringServices.mtl
@@ -62,6 +62,7 @@
     @Test 'test'.tokenize() => ['test'.tokenize()/]
     @Test 'test'.at(2) => ['test'.at(2)/]
     @Test 'test'.characters() => ['test'.characters()/]
+    @Test 'lineOne' + lineSeparator() + 'lineTwo' + lineSeparator() + 'LineThree'.tokenizeLine()->sep(', ') => ['lineOne' + p.lineSeparator() + 'lineTwo' + p.lineSeparator() + 'LineThree'.tokenize(''.lineSeparator())->sep(', ')/]
     @Test '*' + lineSeparator() + '*' => ['*' + p.lineSeparator() + '*'/]
   [/file]