diff --git a/src/main/java/org/rosi_project/model_sync/model_join/representation/core/AttributePath.java b/src/main/java/org/rosi_project/model_sync/model_join/representation/core/AttributePath.java
index e852eb223f3d858b61930dc6ec9ff78ffd04c93f..2f28ca24b1a9e644ec9799541d88ef1d65c8e972 100644
--- a/src/main/java/org/rosi_project/model_sync/model_join/representation/core/AttributePath.java
+++ b/src/main/java/org/rosi_project/model_sync/model_join/representation/core/AttributePath.java
@@ -1,6 +1,5 @@
 package org.rosi_project.model_sync.model_join.representation.core;
 
-import amlanguage.Attribute;
 import java.util.Objects;
 import javax.annotation.Nonnull;
 
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetter.scala b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetter.scala
index 55939bb94a99d76253b1aa0d467526ee3ef5ad5e..d1601adb2c3dcb2a24657adf7240f17188483e02 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetter.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetter.scala
@@ -11,7 +11,12 @@ class SSetter(struc: SStructuralFeature) extends SMethod(
   name = s"set${struc.getName.firstLetterToUpperCase}",
   result = PredefTypes.Unit,
   params = Seq(SMethodParameter(struc.getName.head.toString, struc.getTypeElement)),
-  implementation = Seq(SMethodStatement(content = s"require(${struc.getName.head} != null)"),
-      SMethodStatement(content = s"${struc.getName} = ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))) {
+  implementation = Seq(SMethodStatement(content = s"${struc.getName} = ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))) {
 
+  if (!STypeRegistry.isDefaultNotNullType(struc.getTypeElement.getName)) {
+    implementation = Seq(SMethodStatement(content = s"require(${struc.getName.head} != null)"),
+      SMethodStatement(content = s"${struc.getName} = ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))
+  } else {
+    implementation = Seq(SMethodStatement(content = s"${struc.getName} = ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))
+  } 
 }
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterAdd.scala b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterAdd.scala
index f5b69db409963b419951c3770d925a6eec056edb..ff9aa456fc1aa70bf9c2ee317be547f040f0260c 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterAdd.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterAdd.scala
@@ -11,8 +11,13 @@ class SSetterAdd(struc: SStructuralFeature, inner: STypedElement) extends SMetho
   name = s"add${struc.getName.firstLetterToUpperCase}",
   result = PredefTypes.Unit,
   params = Seq(SMethodParameter(struc.getName.head.toString, inner)),
-  implementation = Seq(SMethodStatement(content = s"require(${struc.getName.head} != null)"),
-      SMethodStatement(content = s"require(!${struc.getName}.contains(${struc.getName.head}))"),
-      SMethodStatement(content = s"${struc.getName} += ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))) {
+  implementation = Seq(SMethodStatement(content = s"${struc.getName} += ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))) {
 
+  if (!STypeRegistry.isDefaultNotNullType(struc.getTypeElement.getName)) {
+    implementation = Seq(SMethodStatement(content = s"require(${struc.getName.head} != null)"),
+      SMethodStatement(content = s"require(!${struc.getName}.contains(${struc.getName.head}))"),
+      SMethodStatement(content = s"${struc.getName} += ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))
+  } else {
+    implementation = Seq(SMethodStatement(content = s"${struc.getName} += ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))
+  }
 }
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterRemove.scala b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterRemove.scala
index 646fc799b93187c51a0fed1e7b3d3e960ab67006..7d2599fcf11c3167a9a8d9da10cc8123bc1a050f 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterRemove.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterRemove.scala
@@ -11,8 +11,13 @@ class SSetterRemove(struc: SStructuralFeature, inner: STypedElement) extends SMe
   name = s"remove${struc.getName.firstLetterToUpperCase}",
   result = PredefTypes.Unit,
   params = Seq(SMethodParameter(struc.getName.head.toString, inner)),
-  implementation = Seq(SMethodStatement(content = s"require(${struc.getName.head} != null)"),
-      SMethodStatement(content = s"require(${struc.getName}.contains(${struc.getName.head}))"),
-      SMethodStatement(content = s"${struc.getName} -= ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))) {
+  implementation = Seq(SMethodStatement(content = s"${struc.getName} -= ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))) {
 
+  if (!STypeRegistry.isDefaultNotNullType(struc.getTypeElement.getName)) {
+    implementation = Seq(SMethodStatement(content = s"require(${struc.getName.head} != null)"),
+      SMethodStatement(content = s"require(${struc.getName}.contains(${struc.getName.head}))"),
+      SMethodStatement(content = s"${struc.getName} -= ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))
+  } else {
+    implementation = Seq(SMethodStatement(content = s"${struc.getName} -= ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))
+  }
 }
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/STypeRegistry.scala b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/STypeRegistry.scala
index 2368fb35f8f4b8da2330ee5adf77379271670aac..148c785ca767f6fe052a44960b052bbed9276885 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/STypeRegistry.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/STypeRegistry.scala
@@ -13,18 +13,21 @@ object STypeRegistry {
   
   private var registeredTypes: Map[STypedElement, EClass] = Map.empty
   
-  private val defaultTypes: Map[STypedElement, EClass] = Map(
+  private val defaultTypesNull: Map[STypedElement, EClass] = Map(
+    PredefTypes.Date -> null,
+    PredefTypes.Object -> null,
+    PredefTypes.String -> null,
+  )
+  
+  private val defaultTypesNotNull: Map[STypedElement, EClass] = Map(
     PredefTypes.Boolean -> null,
     PredefTypes.Byte -> null,
     PredefTypes.Char -> null,
-    PredefTypes.Date -> null,
     PredefTypes.Double -> null,
     PredefTypes.Float -> null,
     PredefTypes.Integer -> null,
-    PredefTypes.Object -> null,
     PredefTypes.Long -> null,
     PredefTypes.Short -> null,
-    PredefTypes.String -> null,
   )
   
   def getFromClass(cls: EClass): STypedElement = {
@@ -36,7 +39,30 @@ object STypeRegistry {
     null
   }
 
-  registeredTypes ++= defaultTypes
+  registeredTypes ++= defaultTypesNull
+  registeredTypes ++= defaultTypesNotNull
+  
+  /**
+   * Return true if this name comes from a standard null type.
+   * 
+   * @param name the name that must be proven.
+   * @return `true` if it is a default type. Otherwise return false.
+   */
+  def isDefaultNullType(name: String): Boolean = {
+    val existingNull: Option[STypedElement] = defaultTypesNull.keySet.find(existing => existing.getName == name)
+    return !existingNull.isEmpty
+  }
+  
+  /**
+   * Return true if this name comes from a standard not null type.
+   * 
+   * @param name the name that must be proven.
+   * @return `true` if it is a default type. Otherwise return false.
+   */
+  def isDefaultNotNullType(name: String): Boolean = {
+    val existingNotNull: Option[STypedElement] = defaultTypesNotNull.keySet.find(existing => existing.getName == name)
+    return !existingNotNull.isEmpty
+  }
   
   /**
    * Return true if this name comes from a standard type.
@@ -45,12 +71,9 @@ object STypeRegistry {
    * @return `true` if it is a default type. Otherwise return false.
    */
   def isDefaultType(name: String): Boolean = {
-    val existing: Option[STypedElement] = defaultTypes.keySet.find(existing => existing.getName == name)
-    if (existing.isEmpty) {
-      return false
-    } else {
-      return true
-    }
+    val existingNotNull: Option[STypedElement] = defaultTypesNotNull.keySet.find(existing => existing.getName == name)
+    val existingNull: Option[STypedElement] = defaultTypesNull.keySet.find(existing => existing.getName == name)
+    return !existingNotNull.isEmpty || !existingNull.isEmpty
   }
 
   /** Registers a type if it is not already known.
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/types/PredefTypes.scala b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/types/PredefTypes.scala
index 65e0e322d9ca3d3bdb7379c0f5bdd50a25169df5..9671ae744434661a5f2abe42971ace812318cdce 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/types/PredefTypes.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/types/PredefTypes.scala
@@ -35,11 +35,11 @@ object PredefTypes {
   /** `Double` */
   val Double = SType("Double")
   
-  /** `String` */
-  val String = SType("String")
-  
   /** `Boolean` */
   val Boolean = SType("Boolean")
+  
+  /** `String` */
+  val String = SType("String")  
 
   /** `java.lang.Object` */
   val Object = SType("Object")