/**
 * <copyright>
 * 
 * Copyright (c) 2011 See4sys and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
 * 
 * Contributors: 
 *     See4sys - Initial API and implementation
 * 
 * </copyright>
 */
import uml;
import typemodel;

Platform transform(Model model) :
	model.ownedElement.typeSelect(Package).get(0).createPlatform();

create Platform this createPlatform(Package package) :
	setName(package.name);

