Tests to write:
================
emfServices
	 ? eInvoke(operation, arguments)
	 ? oclIsInState(statespec)
	(LOT1) check return types of EMF services (eClassifiers returns OrderedSet in A3 and Sequence in A4)
sequencesServices
	 ? asBag: order changes
	 ? asSet: order changes
orderedSetsServices
	 ? asBag: order changes
	 ? asSet: order changes
	 intersection(bag)
	 symmetricDifference(s), 

Differences when evaluated in A4:
=================================
orderedSetsServices
	 collections.union(collection): returns nothing[collections -> union(OrderedSet{'a','b','d'}) -> sortedBy(toString())/]

Unsupported in A4:
==================
stringServices
	 lineSeparator
	 replaceFirst
	 strtok
	 substituteFirst
	 tokenizeLine
acceleoServices
	(LOT1) TODO implement getProperties
numericServices
	(LOT1) WIP https://git.eclipse.org/r/#/c/163019/ operations between Real And Integers
emfServices
	 current(element)
	 current(int)
	 eInverse
	 eInverse(filter)
	 eIsProxy
	 eIsSet
	 eSet
	 eUnset
sequencesServices
	 collectNested
	 drop
	 dropRight
	 flatten
	 indexOfSlice
	 lastIndexOfSlice
	 product
	 removeAll
	 selectByKind
	 selectByType
orderedSetsServices
	 collectNested
	 drop
	 dropRight
	 flatten
	 indexOfSlice
	 lastIndexOfSlice
	 order change: mixed -> union(OrderedSet{'a','b','d'}) => [mixed -> union(OrderedSet{'a','b','d'})/]
	 order change: mixed -> union(OrderedSet{'a','b'}) => [mixed -> union(OrderedSet{'a','b'})/]
	 product
	 removeAll
	 selectByKind
	 selectByType
