diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/AmaltheaModel2ModelTransformationDefinition.java b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/AmaltheaModel2ModelTransformationDefinition.java
index 10eac0d..955b221 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/AmaltheaModel2ModelTransformationDefinition.java
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/AmaltheaModel2ModelTransformationDefinition.java
@@ -1,15 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
  * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  * SPDX-License-Identifier: EPL-2.0
- *
+ * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2m.configuration;
 
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/M2MTransformationConfig.java b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/M2MTransformationConfig.java
index dd579ff..3ccad4a 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/M2MTransformationConfig.java
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/M2MTransformationConfig.java
@@ -1,16 +1,17 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
  * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  * SPDX-License-Identifier: EPL-2.0
- *
+ * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2m.configuration;
 
@@ -38,6 +39,7 @@
 		configurationPolicy = ConfigurationPolicy.REQUIRE,
 		property = { "transformation=Amalthea2SampleModel" },
 		service = IModelToModelConfig.class)
+
 public class M2MTransformationConfig implements IModelToModelConfig {
 
 	private static final Logger LOG = LoggerFactory.getLogger(M2MTransformationConfig.class);
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/AmaltheaMultiFileLoader.java b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/AmaltheaMultiFileLoader.java
index 9368245..36a5590 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/AmaltheaMultiFileLoader.java
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/AmaltheaMultiFileLoader.java
@@ -1,21 +1,21 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
  * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  * SPDX-License-Identifier: EPL-2.0
- *
+ * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2m.loader;
 
 import java.io.File;
-import java.io.FilenameFilter;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -48,23 +48,10 @@
 		File folder = new File(directoryPath);
 
 		if (folder.isDirectory()) {
-			File[] listFiles = folder.listFiles(new FilenameFilter() {
-
-				@Override
-				public boolean accept(File file, String name) {
-
-					if (name.endsWith(".amxmi")) {
-						return true;
-					}
-
-					return false;
-				}
-			});
+			File[] listFiles = folder.listFiles((file, name) -> name.endsWith(".amxmi"));
 
 			ResourceSet resourceSet = initializeResourceSet();
-
 			loadMultipleFiles(resourceSet, listFiles);
-
 			return resourceSet;
 		}
 
@@ -74,7 +61,7 @@
 
 	private List<Amalthea> loadMultipleFiles(ResourceSet resourceSet, File[] listFiles) {
 
-		List<Amalthea> models = new ArrayList<Amalthea>();
+		List<Amalthea> models = new ArrayList<>();
 
 		for (File amxmiFile : listFiles) {
 
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/IMultiFileLoader.java b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/IMultiFileLoader.java
index e44296c..e00a7d6 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/IMultiFileLoader.java
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/IMultiFileLoader.java
@@ -1,16 +1,17 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
  * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  * SPDX-License-Identifier: EPL-2.0
- *
+ * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2m.loader;
 
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/AmaltheaModel2ModelTransformer.xtend b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/AmaltheaModel2ModelTransformer.xtend
index 71bdfa8..ba221a2 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/AmaltheaModel2ModelTransformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/AmaltheaModel2ModelTransformer.xtend
@@ -1,13 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2018 Robert Bosch GmbH.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2m.transformers
 
@@ -31,9 +35,9 @@
 @Component(
 	configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
 	configurationPolicy = ConfigurationPolicy.REQUIRE,
-	property=#[
-	"transformation=Amalthea2SampleModel"
-], service=Model2ModelRootTransformer)
+	property = #[ "transformation=Amalthea2SampleModel" ],
+	service = Model2ModelRootTransformer
+)
 class AmaltheaModel2ModelTransformer extends Model2ModelRootTransformer {
 
 	static final Logger LOG = LoggerFactory.getLogger(typeof(AmaltheaModel2ModelTransformer))
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/CacheTransformer.xtend b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/CacheTransformer.xtend
index 906462c..3586748 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/CacheTransformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/CacheTransformer.xtend
@@ -1,13 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2018 Robert Bosch GmbH.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2m.transformers
 
@@ -24,7 +28,7 @@
 @Component(
 	configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
 	configurationPolicy = ConfigurationPolicy.REQUIRE,
-	service=#[CacheTransformer,AbstractTransformer]
+	service = #[ CacheTransformer, AbstractTransformer ]
 )
 class CacheTransformer extends AbstractTransformer {
 
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/HWTransformer.xtend b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/HWTransformer.xtend
index 7dfb405..2fd777a 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/HWTransformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/HWTransformer.xtend
@@ -1,13 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2018 Robert Bosch GmbH.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2m.transformers
 
@@ -26,9 +30,11 @@
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
-@Component(configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
+@Component(
+	configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
 	configurationPolicy = ConfigurationPolicy.REQUIRE, 
-	service = #[HWTransformer,AbstractTransformer])
+	service = #[ HWTransformer, AbstractTransformer ]
+)
 class HWTransformer extends AbstractTransformer {
 
 	static final Logger LOG = LoggerFactory.getLogger(typeof(HWTransformer))
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/MemoryTransformer.xtend b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/MemoryTransformer.xtend
index 68cef67..3a714c2 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/MemoryTransformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/MemoryTransformer.xtend
@@ -1,13 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2018 Robert Bosch GmbH.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2m.transformers
 
@@ -24,7 +28,8 @@
 @Component(
 	configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
 	configurationPolicy = ConfigurationPolicy.REQUIRE,
-	service = #[MemoryTransformer,AbstractTransformer])
+	service = #[ MemoryTransformer, AbstractTransformer ]
+)
 class MemoryTransformer extends AbstractTransformer {
 
 	static final Logger LOG = LoggerFactory.getLogger(typeof(MemoryTransformer))
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/ProcessingUnitTransformer.xtend b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/ProcessingUnitTransformer.xtend
index 78062fb..102c070 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/ProcessingUnitTransformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/ProcessingUnitTransformer.xtend
@@ -1,13 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2018 Robert Bosch GmbH.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2m.transformers
 
@@ -26,7 +30,7 @@
 @Component(
 	configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
 	configurationPolicy = ConfigurationPolicy.REQUIRE,
-	service=#[ProcessingUnitTransformer,AbstractTransformer]
+	service = #[ ProcessingUnitTransformer, AbstractTransformer ]
 )
 class ProcessingUnitTransformer extends AbstractTransformer {
 
diff --git a/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/transformers/CustTransformer.xtend b/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/transformers/CustTransformer.xtend
index 2a9fe35..1b1b4c2 100644
--- a/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/transformers/CustTransformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/transformers/CustTransformer.xtend
@@ -1,3 +1,18 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *     Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
 package app4mc.example.transform.m2t.cust.transformers
 
 import org.eclipse.app4mc.amalthea.model.Amalthea
@@ -5,8 +20,8 @@
 import app4mc.example.transform.m2t.transformers.M2T_Output_Transformer
 
 @Component(
-	property=#["service.ranking:Integer=10"],
-	service=M2T_Output_Transformer
+	property = #[ "service.ranking:Integer=10" ],
+	service = M2T_Output_Transformer
 )
 class CustTransformer extends M2T_Output_Transformer {
 	/**
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationConfig.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationConfig.java
index 8ba9dee..d3c7277 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationConfig.java
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationConfig.java
@@ -1,16 +1,17 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
  * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  * SPDX-License-Identifier: EPL-2.0
- *
+ * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2t.configuration;
 
@@ -29,10 +30,11 @@
 import app4mc.example.transform.m2t.loader.AmaltheaMultiFileLoader2;
 
 @Component(
-		configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
-		configurationPolicy = ConfigurationPolicy.REQUIRE,
-		property = { "transformation=Amalthea2Text" },
-		service = IModelToTextConfig.class)
+	configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
+	configurationPolicy = ConfigurationPolicy.REQUIRE,
+	property = { "transformation=Amalthea2Text" },
+	service = IModelToTextConfig.class
+)
 public class M2TTransformationConfig implements IModelToTextConfig {
 
 	private static final Logger LOG = LoggerFactory.getLogger(M2TTransformationConfig.class);
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationDefinition.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationDefinition.java
index 20cf288..12196a3 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationDefinition.java
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationDefinition.java
@@ -1,15 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
  * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  * SPDX-License-Identifier: EPL-2.0
- *
+ * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2t.configuration;
 
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/AmaltheaMultiFileLoader2.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/AmaltheaMultiFileLoader2.java
index cf8055c..2ea76b2 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/AmaltheaMultiFileLoader2.java
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/AmaltheaMultiFileLoader2.java
@@ -1,16 +1,17 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
  * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  * SPDX-License-Identifier: EPL-2.0
- *
+ * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2t.loader;
 
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/IMultiFileLoader.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/IMultiFileLoader.java
index 6061cfa..20ae4d4 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/IMultiFileLoader.java
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/IMultiFileLoader.java
@@ -1,16 +1,17 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
  * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  * SPDX-License-Identifier: EPL-2.0
- *
+ * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2t.loader;
 
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/AmaltheaModel2TextTransformer.xtend b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/AmaltheaModel2TextTransformer.xtend
index 37f08a7..e4a5257 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/AmaltheaModel2TextTransformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/AmaltheaModel2TextTransformer.xtend
@@ -1,13 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2t.transformers
 
@@ -31,8 +35,8 @@
 	configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
 	configurationPolicy = ConfigurationPolicy.REQUIRE,
 	property = #[ "transformation=Amalthea2Text" ],
-	service = Model2TextRootTransformer)
-
+	service = Model2TextRootTransformer
+)
 class AmaltheaModel2TextTransformer extends Model2TextRootTransformer {
 
 	static final Logger LOG = LoggerFactory.getLogger(typeof(AmaltheaModel2TextTransformer))
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/M2T_Output_Transformer.xtend b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/M2T_Output_Transformer.xtend
index 9abe0d7..60e431f 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/M2T_Output_Transformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/M2T_Output_Transformer.xtend
@@ -1,13 +1,17 @@
-/*******************************************************************************
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+/**
+ ********************************************************************************
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
+ ********************************************************************************
+ */
 
 package app4mc.example.transform.m2t.transformers
 
@@ -19,7 +23,9 @@
 import org.eclipse.app4mc.transformation.transformers.AbstractTransformer
 import org.osgi.service.component.annotations.Component
 
-@Component(service=M2T_Output_Transformer)
+@Component(
+	service = M2T_Output_Transformer
+)
 class M2T_Output_Transformer extends AbstractTransformer {
 
 	/**
