/**
 * Copyright (c) 2010-2012 ISBAN S.L
 * 
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *  
 * Contributors:
 * 		Ruben De Dios (ISBAN S.L)
 * 		Andrez Alvarez Mattos (ISBAN S.L)
 */
package org.eclipse.gmf.tooling.simplemap.simplemappings;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Simple Sub Node Reference</b></em>'.
 * <!-- end-user-doc -->
 *
 *
 * @see org.eclipse.gmf.tooling.simplemap.simplemappings.SimplemappingsPackage#getSimpleSubNode()
 * @model
 * @generated
 */
public interface SimpleSubNode extends SimpleNode, SimpleParentNode {
} // SimpleSubNode
