/*
 * generated by Xtext
 */
package javamm;

import org.eclipse.xtext.conversion.IValueConverterService;
import org.eclipse.xtext.generator.IGenerator;
import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.validation.IDiagnosticConverter;
import org.eclipse.xtext.xbase.compiler.XbaseCompiler;
import org.eclipse.xtext.xbase.controlflow.IEarlyExitComputer;
import org.eclipse.xtext.xbase.imports.RewritableImportSection;
import org.eclipse.xtext.xbase.scoping.featurecalls.OperatorMapping;
import org.eclipse.xtext.xbase.typesystem.computation.ITypeComputer;
import org.eclipse.xtext.xbase.typesystem.internal.ExpressionArgumentFactory;

import com.google.inject.Binder;
import com.google.inject.name.Names;

import javamm.compiler.JavammJvmModelGenerator;
import javamm.compiler.JavammXbaseCompiler;
import javamm.controlflow.JavammEarlyExitComputer;
import javamm.conversion.JavammValueConverterService;
import javamm.imports.JavammRewritableImportSection.JavammRewritableImportSectionFactory;
import javamm.scoping.JavammImportedNamespaceScopeProvider;
import javamm.scoping.JavammOperatorMapping;
import javamm.scoping.JavammQualifiedNameProvider;
import javamm.typesystem.JavammExpressionArgumentFactory;
import javamm.typesystem.JavammTypeComputer;
import javamm.validation.JavammDiagnosticConverter;


/**
 * Use this class to register components to be used at runtime / without the Equinox extension registry.
 */
public class JavammRuntimeModule extends javamm.AbstractJavammRuntimeModule {

	public Class<? extends ITypeComputer> bindITypeComputer() {
		return JavammTypeComputer.class;
	}

	public Class<? extends XbaseCompiler> bindXbaseCompiler() {
		return JavammXbaseCompiler.class;
	}

	public Class<? extends ExpressionArgumentFactory> bindExpressionArgumentFactory() {
		return JavammExpressionArgumentFactory.class;
	}

	public Class<? extends OperatorMapping> bindOperatorMapping() {
		return JavammOperatorMapping.class;
	}

	public Class<? extends IDiagnosticConverter> bindIDiagnosticConverter() {
		return JavammDiagnosticConverter.class;
	}
	
	public Class<? extends RewritableImportSection.Factory> bindRewritableImportSection$Factory() {
		return JavammRewritableImportSectionFactory.class;
	}

	@Override
	public Class<? extends IGenerator> bindIGenerator() {
		return JavammJvmModelGenerator.class;
	}

	@Override
	public Class<? extends IValueConverterService> bindIValueConverterService() {
		return JavammValueConverterService.class;
	}

	@Override
	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
		return JavammQualifiedNameProvider.class;
	}

	public Class<? extends IEarlyExitComputer> bindIEarlyExitComputer() {
		return JavammEarlyExitComputer.class;
	}

	@Override
	public void configureIScopeProviderDelegate(Binder binder) {
		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class)
				.annotatedWith(
						Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE))
				.to(JavammImportedNamespaceScopeProvider.class);
	}
}

@@ -198,24 +198,96 @@
 meProvider;%0A
+import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;%0A
 import org.e
@@ -2993,39 +2993,8 @@
 med(
-org.eclipse.xtext.scoping.impl.
 Abst

use import for xtext class