/*******************************************************************************
 * Copyright (c) 2009, 2011 SAP AG and others.
 * 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:
 *     SAP AG - initial API and implementation
 ******************************************************************************
 * $Id: ExtentModifyingAssociationEndSignatureImplementationImpl.java,v 1.2 2011/03/05 21:51:24 auhl Exp $
 */
package data.classes.impl;

import data.classes.ClassesPackage;
import data.classes.ExtentModifyingAssociationEndSignatureImplementation;

import org.eclipse.emf.ecore.EClass;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Extent Modifying Association End Signature Implementation</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * </p>
 *
 * @generated
 */
public abstract class ExtentModifyingAssociationEndSignatureImplementationImpl extends AssociationEndSignatureImplementationImpl implements ExtentModifyingAssociationEndSignatureImplementation {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ExtentModifyingAssociationEndSignatureImplementationImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return ClassesPackage.Literals.EXTENT_MODIFYING_ASSOCIATION_END_SIGNATURE_IMPLEMENTATION;
	}

} //ExtentModifyingAssociationEndSignatureImplementationImpl
