class SpecificationTransformerTypeBased implements Transformer<T, S> {

	@Override
	public S transform(T typeBasedSpec) {

		Architecture<Resource, Link> architecture = generateArchitecture(typeBasedSpec.getResourceTypes(),
				typeBasedSpec.getLinkTypes());
		Mappings<Task, Resource> archMappings = generateMappings(typeBasedSpec.getMappings(), architecture);

		return (S) new Specification(typeBasedSpec.getApplication(), architecture, archMappings);
	}

}