Reset ImportCollector to match scope
diff --git a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/compilationunit/CompilationUnitSourceBuilder.java b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/compilationunit/CompilationUnitSourceBuilder.java
index fbffc8a..cedb6d8 100644
--- a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/compilationunit/CompilationUnitSourceBuilder.java
+++ b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/compilationunit/CompilationUnitSourceBuilder.java
@@ -86,53 +86,58 @@
   @Override
   public void createSource(StringBuilder source, String lineDelimiter, PropertyMap context, IImportValidator validator) {
     // add CU scope to import validator chain
-    IImportCollector collector = new CompilationUnitScopedImportCollector(validator.getImportCollector(), getPackageName());
+    IImportCollector origImportCollector = validator.getImportCollector();
+    IImportCollector collector = new CompilationUnitScopedImportCollector(origImportCollector, getPackageName());
     validator.setImportCollector(collector);
+    try {
+      // loop through all types recursively to ensure all simple names that will be created are "consumed" in the import validator
+      consumeAllTypeNamesRec(m_types, collector);
 
-    // loop through all types recursively to ensure all simple names that will be created are "consumed" in the import validator
-    consumeAllTypeNamesRec(m_types, collector);
+      //declared imports
+      for (String s : m_declaredImports) {
+        collector.addImport(s);
+      }
+      for (String s : m_declaredStaticImports) {
+        collector.addStaticImport(s);
+      }
 
-    //declared imports
-    for (String s : m_declaredImports) {
-      collector.addImport(s);
-    }
-    for (String s : m_declaredStaticImports) {
-      collector.addStaticImport(s);
-    }
+      // header
+      StringBuilder headerSourceBuilder = new StringBuilder();
+      super.createSource(headerSourceBuilder, lineDelimiter, context, validator);
 
-    // header
-    StringBuilder headerSourceBuilder = new StringBuilder();
-    super.createSource(headerSourceBuilder, lineDelimiter, context, validator);
+      // package declaration
+      if (!StringUtils.isEmpty(getPackageName())) {
+        headerSourceBuilder.append("package ").append(getPackageName()).append(';').append(lineDelimiter).append(lineDelimiter);
+      }
 
-    // package declaration
-    if (!StringUtils.isEmpty(getPackageName())) {
-      headerSourceBuilder.append("package ").append(getPackageName()).append(';').append(lineDelimiter).append(lineDelimiter);
-    }
+      // type sources
+      StringBuilder typeSourceBuilder = new StringBuilder();
+      for (ITypeSourceBuilder typeBuilder : getTypes()) {
+        if (typeBuilder != null) {
+          typeBuilder.createSource(typeSourceBuilder, lineDelimiter, context, validator);
+        }
+      }
 
-    // type sources
-    StringBuilder typeSourceBuilder = new StringBuilder();
-    for (ITypeSourceBuilder typeBuilder : getTypes()) {
-      if (typeBuilder != null) {
-        typeBuilder.createSource(typeSourceBuilder, lineDelimiter, context, validator);
+      // imports
+      Collection<String> importsToCreate = collector.createImportDeclarations();
+      if (importsToCreate.size() > 0) {
+        for (String imp : importsToCreate) {
+          headerSourceBuilder.append(imp).append(lineDelimiter);
+        }
+        headerSourceBuilder.append(lineDelimiter);
+      }
+
+      source.append(headerSourceBuilder);
+      source.append(typeSourceBuilder);
+      source.append(lineDelimiter);
+
+      // footer
+      for (ISourceBuilder f : m_footerSourceBuilders) {
+        f.createSource(source, lineDelimiter, context, validator);
       }
     }
-
-    // imports
-    Collection<String> importsToCreate = collector.createImportDeclarations();
-    if (importsToCreate.size() > 0) {
-      for (String imp : importsToCreate) {
-        headerSourceBuilder.append(imp).append(lineDelimiter);
-      }
-      headerSourceBuilder.append(lineDelimiter);
-    }
-
-    source.append(headerSourceBuilder);
-    source.append(typeSourceBuilder);
-    source.append(lineDelimiter);
-
-    // footer
-    for (ISourceBuilder f : m_footerSourceBuilders) {
-      f.createSource(source, lineDelimiter, context, validator);
+    finally {
+      validator.setImportCollector(origImportCollector); // reset scope
     }
   }
 
diff --git a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/type/EnclosingTypeScopedImportCollector.java b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/type/EnclosingTypeScopedImportCollector.java
index c27cacf..76bbc52 100644
--- a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/type/EnclosingTypeScopedImportCollector.java
+++ b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/type/EnclosingTypeScopedImportCollector.java
@@ -13,6 +13,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.eclipse.scout.sdk.core.IJavaRuntimeTypes;
 import org.eclipse.scout.sdk.core.importcollector.IImportCollector;
 import org.eclipse.scout.sdk.core.importcollector.WrappedImportCollector;
 import org.eclipse.scout.sdk.core.model.api.IJavaEnvironment;
@@ -62,8 +63,12 @@
       m_enclosingQualifiers.add(qname);
       IType t = env.findType(qname);
       if (t != null) {
-        for (IType s : t.superTypes().withSuperTypes(true).list()) {
-          m_enclosingQualifiers.add(s.name());
+        for (IType s : t.superTypes().list()) {
+          String fqnName = s.name();
+          if (IJavaRuntimeTypes.Object.equals(fqnName)) {
+            continue;
+          }
+          m_enclosingQualifiers.add(fqnName);
           for (IType i : s.innerTypes().list()) {
             m_enclosedSimpleNames.add(i.elementName());
           }
diff --git a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/type/TypeSourceBuilder.java b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/type/TypeSourceBuilder.java
index 3396115..16bce63 100644
--- a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/type/TypeSourceBuilder.java
+++ b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/type/TypeSourceBuilder.java
@@ -93,50 +93,56 @@
 
   @Override
   public void createSource(StringBuilder source, String lineDelimiter, PropertyMap context, IImportValidator validator) {
-    IImportCollector collector = new EnclosingTypeScopedImportCollector(validator.getImportCollector(), this);
+    IImportCollector origImportCollector = validator.getImportCollector();
+    IImportCollector collector = new EnclosingTypeScopedImportCollector(origImportCollector, this);
     validator.setImportCollector(collector);
 
-    super.createSource(source, lineDelimiter, context, validator);
+    try {
+      super.createSource(source, lineDelimiter, context, validator);
 
-    if (Flags.isInterface(getFlags()) && getSuperTypeSignature() != null) {
-      throw new IllegalArgumentException("An interface can not have a superclass.");
-    }
-
-    // type definition
-    source.append(Flags.toString(getFlags())).append(' ');
-    source.append(((getFlags() & Flags.AccInterface) != 0) ? ("interface ") : ("class "));
-    source.append(getElementName());
-
-    // type parameters
-    if (!m_typeParameters.isEmpty()) {
-      source.append(ISignatureConstants.C_GENERIC_START);
-      for (ITypeParameterSourceBuilder p : m_typeParameters) {
-        p.createSource(source, lineDelimiter, context, validator);
-        source.append(", ");
+      if (Flags.isInterface(getFlags()) && getSuperTypeSignature() != null) {
+        throw new IllegalArgumentException("An interface can not have a superclass.");
       }
-      source.setLength(source.length() - 2);
-      source.append(ISignatureConstants.C_GENERIC_END);
-    }
 
-    // super type (extends)
-    if (!StringUtils.isEmpty(getSuperTypeSignature())) {
-      String superTypeRefName = validator.useSignature(getSuperTypeSignature());
-      source.append(" extends ").append(superTypeRefName);
-    }
+      // type definition
+      source.append(Flags.toString(getFlags())).append(' ');
+      source.append(((getFlags() & Flags.AccInterface) != 0) ? ("interface ") : ("class "));
+      source.append(getElementName());
 
-    // interfaces
-    Iterator<String> interfaceSigIterator = getInterfaceSignatures().iterator();
-    if (interfaceSigIterator.hasNext()) {
-      source.append(((getFlags() & Flags.AccInterface) != 0) ? (" extends ") : (" implements "));
-      source.append(validator.useSignature(interfaceSigIterator.next()));
-      while (interfaceSigIterator.hasNext()) {
-        source.append(", ").append(validator.useSignature(interfaceSigIterator.next()));
+      // type parameters
+      if (!m_typeParameters.isEmpty()) {
+        source.append(ISignatureConstants.C_GENERIC_START);
+        for (ITypeParameterSourceBuilder p : m_typeParameters) {
+          p.createSource(source, lineDelimiter, context, validator);
+          source.append(", ");
+        }
+        source.setLength(source.length() - 2);
+        source.append(ISignatureConstants.C_GENERIC_END);
       }
+
+      // super type (extends)
+      if (!StringUtils.isEmpty(getSuperTypeSignature())) {
+        String superTypeRefName = validator.useSignature(getSuperTypeSignature());
+        source.append(" extends ").append(superTypeRefName);
+      }
+
+      // interfaces
+      Iterator<String> interfaceSigIterator = getInterfaceSignatures().iterator();
+      if (interfaceSigIterator.hasNext()) {
+        source.append(((getFlags() & Flags.AccInterface) != 0) ? (" extends ") : (" implements "));
+        source.append(validator.useSignature(interfaceSigIterator.next()));
+        while (interfaceSigIterator.hasNext()) {
+          source.append(", ").append(validator.useSignature(interfaceSigIterator.next()));
+        }
+      }
+      source.append(" {");
+      createTypeContent(source, lineDelimiter, context, validator);
+      source.append(lineDelimiter);
+      source.append('}');
     }
-    source.append(" {");
-    createTypeContent(source, lineDelimiter, context, validator);
-    source.append(lineDelimiter);
-    source.append('}');
+    finally {
+      validator.setImportCollector(origImportCollector); // reset scope
+    }
   }
 
   /**