/**
   * @param mainInstance
   * @param existingModel
   * @param node
   * @return null, if no language support is available or no project could be created.
   * @throws TransformationException
   */
  private ILangSupport configureLanguageSupport(
      InstanceSpecification mainInstance, Model existingModel, InstanceSpecification node)
      throws TransformationException {
    ILangSupport langSupport = LanguageSupport.getLangSupport(getTargetLanguage(mainInstance));
    langSupport.resetConfigurationData();

    String modelName = getModelName(existingModel, node);
    IProject genProject = ProjectManagement.getNamedProject(modelName);
    if ((genProject == null) || !genProject.exists()) {
      genProject = langSupport.createProject(modelName, getTargetOS(node));
      if (genProject == null) {
        return null;
      }
    } else {
      langSupport.setProject(genProject);
      if ((generationOptions & GenerationOptions.REWRITE_SETTINGS) != 0) {
        langSupport.setSettings(getTargetOS(node));
      }
    }
    return langSupport;
  }