/**
 * <copyright>
 * Copyright (c) 2009, 2019 Open Canarias, S.L.
 * 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
 * http://www.eclipse.org/legal/epl-v20.html
 * 
 * Contributors:
 *     Adolfo Sanchez-Barbudo Herrera - Initial API and implementation
 * 
 * </copyright>
 */
package org.eclipse.modisco.omg.gastm;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Function Scope</b></em>'.
 * <!-- end-user-doc -->
 *
 *
 * @see org.eclipse.modisco.omg.gastm.GASTMPackage#getFunctionScope()
 * @model
 * @generated
 */
public interface FunctionScope extends Scope {
} // FunctionScope
