/*
 * Copyright (c) 2008, 2009, 2011-2013, 2015 Eike Stepper (Berlin, Germany) 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:
 *    Eike Stepper - initial API and implementation
 */
package org.eclipse.emf.cdo.tests.model4;

import org.eclipse.emf.cdo.tests.model4interfaces.ISingleRefContainerNPL;

/**
 * <!-- begin-user-doc --> A representation of the model object '<em><b>Impl Single Ref Container NPL</b></em>'. <!--
 * end-user-doc -->
 *
 *
 * @see org.eclipse.emf.cdo.tests.model4.model4Package#getImplSingleRefContainerNPL()
 * @model
 * @generated
 */
public interface ImplSingleRefContainerNPL extends ISingleRefContainerNPL
{
} // ImplSingleRefContainerNPL
