diff --git a/examples/org.eclipse.ocl.examples.common/src/org/eclipse/ocl/examples/common/plugin/LabelGeneratorRegistryReader.java b/examples/org.eclipse.ocl.examples.common/src/org/eclipse/ocl/examples/common/plugin/LabelGeneratorRegistryReader.java
index f13fbdd..c4f52e4 100644
--- a/examples/org.eclipse.ocl.examples.common/src/org/eclipse/ocl/examples/common/plugin/LabelGeneratorRegistryReader.java
+++ b/examples/org.eclipse.ocl.examples.common/src/org/eclipse/ocl/examples/common/plugin/LabelGeneratorRegistryReader.java
@@ -44,6 +44,7 @@
 			ILabelGenerator<?> labelGenerator2 = labelGenerator;
 			if (labelGenerator2 == null) {
 				labelGenerator2 = labelGenerator = (ILabelGenerator<?>) createInstance();
+				assert labelGenerator2 != null;
 			}
 			return labelGenerator2;
 		}
diff --git a/examples/org.eclipse.ocl.examples.common/src/org/eclipse/ocl/examples/common/utils/TracingOption.java b/examples/org.eclipse.ocl.examples.common/src/org/eclipse/ocl/examples/common/utils/TracingOption.java
index fec87dc..b6d5144 100644
--- a/examples/org.eclipse.ocl.examples.common/src/org/eclipse/ocl/examples/common/utils/TracingOption.java
+++ b/examples/org.eclipse.ocl.examples.common/src/org/eclipse/ocl/examples/common/utils/TracingOption.java
@@ -20,6 +20,7 @@
 
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.ocl.examples.common.plugin.OCLExamplesCommonPlugin;
 
 public final class TracingOption implements Appendable
@@ -88,7 +89,7 @@
 		return state;
 	}
 
-	public void println(@NonNull String string) {
+	public void println(@Nullable String string) {
 		if (!resolved) {
 			state = resolveState();
 			resolved = true;
@@ -97,7 +98,7 @@
 			System.out.println(option + " : " + string);		
 	}
 
-	public void println(@NonNull Class<?> clazz, @NonNull String string) {
+	public void println(@NonNull Class<?> clazz, @Nullable String string) {
 		if (!resolved) {
 			state = resolveState();
 			resolved = true;
diff --git a/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/actions/FilterValidationResultAction.java b/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/actions/FilterValidationResultAction.java
index 2223f33..67fc068 100644
--- a/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/actions/FilterValidationResultAction.java
+++ b/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/actions/FilterValidationResultAction.java
@@ -105,9 +105,9 @@
 	}
 	
 	private class SwitchFilterAction extends Action {
-		private final Severity severity;
+		private final @NonNull Severity severity;
 		
-		public SwitchFilterAction(String text, String toolTipText, Severity acceptedSeverity) {
+		public SwitchFilterAction(String text, String toolTipText, @NonNull Severity acceptedSeverity) {
 			super(text, IAction.AS_CHECK_BOX);
 			setToolTipText(toolTipText);
 			this.severity = acceptedSeverity;
diff --git a/examples/org.eclipse.ocl.examples.pivot/src/org/eclipse/ocl/examples/pivot/uml/UML2Pivot.java b/examples/org.eclipse.ocl.examples.pivot/src/org/eclipse/ocl/examples/pivot/uml/UML2Pivot.java
index bec8708..a71bd56 100644
--- a/examples/org.eclipse.ocl.examples.pivot/src/org/eclipse/ocl/examples/pivot/uml/UML2Pivot.java
+++ b/examples/org.eclipse.ocl.examples.pivot/src/org/eclipse/ocl/examples/pivot/uml/UML2Pivot.java
@@ -453,17 +453,17 @@
 
 		@Override
 		public void addStereotypeApplication(@NonNull EObject umlStereotypeApplication) {
+			@SuppressWarnings("null")@NonNull EClass eClass = umlStereotypeApplication.eClass();
 			if (ADD_STEREOTYPE_APPLICATION.isActive()) {
 				if (umlStereotypeApplication instanceof DynamicEObjectImpl) {
-					ADD_STEREOTYPE_APPLICATION.println(EcoreUtils.qualifiedNameFor(umlStereotypeApplication.eClass()));
+					ADD_STEREOTYPE_APPLICATION.println(EcoreUtils.qualifiedNameFor(eClass));
 				}
 				else {
-					ADD_STEREOTYPE_APPLICATION.println(EcoreUtils.qualifiedNameFor(umlStereotypeApplication.eClass()));
+					ADD_STEREOTYPE_APPLICATION.println(EcoreUtils.qualifiedNameFor(eClass));
 //					ADD_STEREOTYPE_APPLICATION.println(umlStereotypeApplication.toString());
 				}
 			}
 			umlStereotypeApplications.add(umlStereotypeApplication);
-			EClass eClass = umlStereotypeApplication.eClass();
 			EPackage ePackage = eClass.getEPackage();
 			addImportedResource(DomainUtil.nonNullEMF(ePackage.eResource()));
 		}
@@ -775,9 +775,13 @@
 			if (ADD_ELEMENT_EXTENSION.isActive()) {
 				StringBuffer s = new StringBuffer();
 				for (EClass eClass : stereotypedElements2.keySet()) {
-					s.append("\n\t" + EcoreUtils.qualifiedNameFor(eClass));
-					for (org.eclipse.uml2.uml.Element element : stereotypedElements2.get(eClass)) {
-						s.append("\n\t\t" + EcoreUtils.qualifiedNameFor(element));
+					if (eClass != null) {
+						s.append("\n\t" + EcoreUtils.qualifiedNameFor(eClass));
+						for (org.eclipse.uml2.uml.Element element : stereotypedElements2.get(eClass)) {
+							if (element != null) {
+								s.append("\n\t\t" + EcoreUtils.qualifiedNameFor(element));
+							}
+						}
 					}
 				}
 				ADD_ELEMENT_EXTENSION.println("Applications" + s.toString());
diff --git a/examples/org.eclipse.ocl.examples.xtext.base.ui/src/org/eclipse/ocl/examples/xtext/base/ui/commands/ValidateHandler.java b/examples/org.eclipse.ocl.examples.xtext.base.ui/src/org/eclipse/ocl/examples/xtext/base/ui/commands/ValidateHandler.java
index d52c1f8..c2bafa7 100644
--- a/examples/org.eclipse.ocl.examples.xtext.base.ui/src/org/eclipse/ocl/examples/xtext/base/ui/commands/ValidateHandler.java
+++ b/examples/org.eclipse.ocl.examples.xtext.base.ui/src/org/eclipse/ocl/examples/xtext/base/ui/commands/ValidateHandler.java
@@ -28,7 +28,6 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EValidator;
-import org.eclipse.emf.ecore.EValidator.Registry;
 import org.eclipse.emf.ecore.impl.EValidatorRegistryImpl;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.util.Diagnostician;
@@ -45,16 +44,12 @@
 {
 	protected final static class Diagnostician_2_8 extends Diagnostician
 	{
-		private final ResourceSet resourceSet;
 		private final AdapterFactory adapterFactory;
-		private final IProgressMonitor progressMonitor;
 
 		protected Diagnostician_2_8(Registry eValidatorRegistry, ResourceSet resourceSet,
 				AdapterFactory adapterFactory, IProgressMonitor progressMonitor) {
 			super(eValidatorRegistry);
-			this.resourceSet = resourceSet;
 			this.adapterFactory = adapterFactory;
-			this.progressMonitor = progressMonitor;
 		}
 
 		@Override
@@ -67,15 +62,6 @@
 			}
 			return super.getObjectLabel(eObject);
 		}
-
-/*		@Override
-		protected boolean doValidate(EValidator eValidator, EClass eClass, EObject eObject,
-				DiagnosticChain diagnostics, Map<Object, Object> context) {
-			progressMonitor.worked(1);
-			synchronized (resourceSet) {
-				return super.doValidate(eValidator, eClass, eObject, diagnostics, context);
-			}
-		} */
 	}
 	protected final static class Diagnostician_2_9 extends Diagnostician
 	{
diff --git a/examples/org.eclipse.ocl.examples.xtext.base/emf-gen/org/eclipse/ocl/examples/xtext/base/basecs/impl/EnumerationCSImpl.java b/examples/org.eclipse.ocl.examples.xtext.base/emf-gen/org/eclipse/ocl/examples/xtext/base/basecs/impl/EnumerationCSImpl.java
index a0b3427..dbac5cb 100644
--- a/examples/org.eclipse.ocl.examples.xtext.base/emf-gen/org/eclipse/ocl/examples/xtext/base/basecs/impl/EnumerationCSImpl.java
+++ b/examples/org.eclipse.ocl.examples.xtext.base/emf-gen/org/eclipse/ocl/examples/xtext/base/basecs/impl/EnumerationCSImpl.java
@@ -108,6 +108,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Enumeration ast()
 	{
 		try
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/ecore/AbstractProjectMapTest.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/ecore/AbstractProjectMapTest.java
index f6a0aac..879c343 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/ecore/AbstractProjectMapTest.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/ecore/AbstractProjectMapTest.java
@@ -113,6 +113,7 @@
 		IProjectDescriptor projectDescriptor = projectMap.getProjectDescriptor(project);
 		assert projectDescriptor != null;
 		IPackageDescriptor packageDescriptor = projectDescriptor.getPackageDescriptor(nsURI);
+		assert packageDescriptor != null;
 		{
 			ResourceSet resourceSet = new ResourceSetImpl();
 			projectMap.initializeResourceSet(resourceSet);
@@ -223,6 +224,7 @@
 		IProjectDescriptor projectDescriptor = projectMap.getProjectDescriptor(project);
 		assert projectDescriptor != null;
 		IPackageDescriptor packageDescriptor = projectDescriptor.getPackageDescriptor(nsURI);
+		assert packageDescriptor != null;
 		{
 			ResourceSet resourceSet = new ResourceSetImpl();
 			projectMap.initializeResourceSet(resourceSet);
@@ -271,6 +273,7 @@
 		IProjectDescriptor projectDescriptor = projectMap.getProjectDescriptor(project);
 		assert projectDescriptor != null;
 		IPackageDescriptor packageDescriptor = projectDescriptor.getPackageDescriptor(nsURI);
+		assert packageDescriptor != null;
 		{
 			ResourceSet resourceSet = new ResourceSetImpl();
 			projectMap.initializeResourceSet(resourceSet);
@@ -324,6 +327,7 @@
 			IProjectDescriptor projectDescriptor = projectMap.getProjectDescriptor(project);
 			assert projectDescriptor != null;
 			IPackageDescriptor packageDescriptor = projectDescriptor.getPackageDescriptor(nsURI);
+			assert packageDescriptor != null;
 			{
 				ResourceSet resourceSet = new ResourceSetImpl();
 				projectMap.initializeResourceSet(resourceSet);
