diff --git a/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/ripoffs/ContainerContentProvider.java b/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/ripoffs/ContainerContentProvider.java
index 4fe1097..3d1ca1f 100644
--- a/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/ripoffs/ContainerContentProvider.java
+++ b/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/ripoffs/ContainerContentProvider.java
@@ -26,7 +26,6 @@
 /**
  * Provides content for a tree viewer that shows only containers.
  */
-@SuppressWarnings({"rawtypes","unchecked"})	// FIXME - remove after LunaM2 when Platform reverts experimental genercs
 public class ContainerContentProvider implements ITreeContentProvider {
     private boolean showClosedProjects = true;
 
@@ -55,7 +54,7 @@
 				return allProjects;
 			}
 
-            ArrayList accessibleProjects = new ArrayList();
+            ArrayList<IProject> accessibleProjects = new ArrayList<IProject>();
             for (int i = 0; i < allProjects.length; i++) {
                 if (allProjects[i].isOpen()) {
                     accessibleProjects.add(allProjects[i]);
@@ -66,7 +65,7 @@
             IContainer container = (IContainer) element;
             if (container.isAccessible()) {
                 try {
-                    List children = new ArrayList();
+                    List<IResource> children = new ArrayList<IResource>();
                     IResource[] members = container.members();
                     for (int i = 0; i < members.length; i++) {
                         if (members[i].getType() != IResource.FILE) {
diff --git a/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/ripoffs/ContainerSelectionGroup.java b/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/ripoffs/ContainerSelectionGroup.java
index 114659f..9caf075 100644
--- a/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/ripoffs/ContainerSelectionGroup.java
+++ b/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/ripoffs/ContainerSelectionGroup.java
@@ -47,7 +47,6 @@
 /**
  * Workbench-level composite for choosing a container.
  */
-@SuppressWarnings({"rawtypes","unchecked"})	// FIXME - remove after LunaM2 when Platform reverts experimental genercs
 public class ContainerSelectionGroup extends Composite {
 	// The listener to notify of events
 	private Listener listener;
@@ -344,7 +343,7 @@
 		selectedContainer = container;
 
 		// expand to and select the specified container
-		List itemsToExpand = new ArrayList();
+		List<IContainer> itemsToExpand = new ArrayList<IContainer>();
 		IContainer parent = container.getParent();
 		while (parent != null) {
 			itemsToExpand.add(0, parent);
diff --git a/examples/org.eclipse.ocl.examples.xtext.base.ui/src/org/eclipse/ocl/examples/xtext/base/ui/wizards/AbstractFileNewWizard.java b/examples/org.eclipse.ocl.examples.xtext.base.ui/src/org/eclipse/ocl/examples/xtext/base/ui/wizards/AbstractFileNewWizard.java
index ebb4b7b..9727e6f 100644
--- a/examples/org.eclipse.ocl.examples.xtext.base.ui/src/org/eclipse/ocl/examples/xtext/base/ui/wizards/AbstractFileNewWizard.java
+++ b/examples/org.eclipse.ocl.examples.xtext.base.ui/src/org/eclipse/ocl/examples/xtext/base/ui/wizards/AbstractFileNewWizard.java
@@ -36,7 +36,6 @@
  * Wizard allowing the user to create a new OCL rule file.
  * @since 1.2
  */
-@SuppressWarnings({"rawtypes"})	// FIXME - remove after LunaM2 when Platform reverts experimental genercs
 public abstract class AbstractFileNewWizard extends Wizard implements INewWizard
 {
 	/** The only page contributing to the wizard */
@@ -114,7 +113,7 @@
 	 */
 	public void init(IWorkbench workbench, IStructuredSelection selection) {
 		IResource selectedResource = null;
-		Iterator it = selection.iterator();
+		Iterator<?> it = selection.iterator();
 		if (it.hasNext()) {
 			Object object = it.next();
 			if (object instanceof IResource) {
