/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.eclipse.gmf.examples.taipan;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Destination</b></em>'.
 * <!-- end-user-doc -->
 *
 *
 * @see org.eclipse.gmf.examples.taipan.TaiPanPackage#getDestination()
 * @model interface="true" abstract="true"
 * @generated
 */
public interface Destination extends EObject {
} // Destination
