@Override
 protected void appendTo(StringBuilder builder) {
   builder.append("(");
   boolean needsComma = false;
   if (normalParameterTypes.length > 0) {
     for (Type type : normalParameterTypes) {
       if (needsComma) {
         builder.append(", ");
       } else {
         needsComma = true;
       }
       ((TypeImpl) type).appendTo(builder);
     }
   }
   if (optionalParameterTypes.length > 0) {
     if (needsComma) {
       builder.append(", ");
       needsComma = false;
     }
     builder.append("[");
     for (Type type : optionalParameterTypes) {
       if (needsComma) {
         builder.append(", ");
       } else {
         needsComma = true;
       }
       ((TypeImpl) type).appendTo(builder);
     }
     builder.append("]");
     needsComma = true;
   }
   if (namedParameterTypes.size() > 0) {
     if (needsComma) {
       builder.append(", ");
       needsComma = false;
     }
     builder.append("{");
     for (Map.Entry<String, Type> entry : namedParameterTypes.entrySet()) {
       if (needsComma) {
         builder.append(", ");
       } else {
         needsComma = true;
       }
       builder.append(entry.getKey());
       builder.append(": ");
       ((TypeImpl) entry.getValue()).appendTo(builder);
     }
     builder.append("}");
     needsComma = true;
   }
   builder.append(") -> ");
   if (returnType == null) {
     builder.append("null");
   } else {
     ((TypeImpl) returnType).appendTo(builder);
   }
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @Override
 public void eUnset(int featureID) {
   switch (featureID) {
     case JavaPackage.TYPE_PARAMETER__BOUNDS:
       getBounds().clear();
       return;
   }
   super.eUnset(featureID);
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @Override
 public void eUnset(int featureID) {
   switch (featureID) {
     case LatexQPackage.CHECK__CHECK:
       setCheck(CHECK_EDEFAULT);
       return;
   }
   super.eUnset(featureID);
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @Override
 public void eSet(int featureID, Object newValue) {
   switch (featureID) {
     case LatexQPackage.CHECK__CHECK:
       setCheck((Boolean) newValue);
       return;
   }
   super.eSet(featureID, newValue);
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @Override
 public void eUnset(int featureID) {
   switch (featureID) {
     case DeviceModelingLanguagePackage.SEQ_TYPE__BASE:
       setBase((Type) null);
       return;
   }
   super.eUnset(featureID);
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @Override
 public void eSet(int featureID, Object newValue) {
   switch (featureID) {
     case DeviceModelingLanguagePackage.SEQ_TYPE__BASE:
       setBase((Type) newValue);
       return;
   }
   super.eSet(featureID, newValue);
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @Override
 public void eUnset(int featureID) {
   switch (featureID) {
     case SimpleumlPackage.ENUMERATION__OWNED_LITERAL:
       getOwnedLiteral().clear();
       return;
   }
   super.eUnset(featureID);
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @SuppressWarnings("unchecked")
 @Override
 public void eSet(int featureID, Object newValue) {
   switch (featureID) {
     case JavaPackage.TYPE_PARAMETER__BOUNDS:
       getBounds().clear();
       getBounds().addAll((Collection<? extends TypeAccess>) newValue);
       return;
   }
   super.eSet(featureID, newValue);
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @SuppressWarnings("unchecked")
 @Override
 public void eSet(int featureID, Object newValue) {
   switch (featureID) {
     case SimpleumlPackage.ENUMERATION__OWNED_LITERAL:
       getOwnedLiteral().clear();
       getOwnedLiteral().addAll((Collection<? extends EnumerationLiteral>) newValue);
       return;
   }
   super.eSet(featureID, newValue);
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @Override
 public void eUnset(int featureID) {
   switch (featureID) {
     case ModulePackage.MODE_QUEUE_TYPE__MAX_LENGTH_CONSTANT:
       setMaxLengthConstant((Constant) null);
       return;
     case ModulePackage.MODE_QUEUE_TYPE__ELEMENT_TYPE:
       setElementType((Type) null);
       return;
   }
   super.eUnset(featureID);
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @Override
 public void eUnset(int featureID) {
   switch (featureID) {
     case MyDSLPackage.ENTITY__ABSTRACT:
       setAbstract(ABSTRACT_EDEFAULT);
       return;
     case MyDSLPackage.ENTITY__FEATURES:
       getFeatures().clear();
       return;
   }
   super.eUnset(featureID);
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @SuppressWarnings("unchecked")
 @Override
 public void eSet(int featureID, Object newValue) {
   switch (featureID) {
     case MyDSLPackage.ENTITY__ABSTRACT:
       setAbstract((Boolean) newValue);
       return;
     case MyDSLPackage.ENTITY__FEATURES:
       getFeatures().clear();
       getFeatures().addAll((Collection<? extends Feature>) newValue);
       return;
   }
   super.eSet(featureID, newValue);
 }