/**
 * Copyright (c) 2009-2010 Thales Corporate Services S.A.S.
 * 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:
 * Thales Corporate Services S.A.S - initial API and implementation
 */
package org.eclipse.egf.producer.fprod.context;

import org.eclipse.egf.model.fprod.ProductionPlan;
import org.eclipse.egf.model.fprod.ProductionPlanInvocation;
import org.eclipse.egf.producer.context.IInvocationProductionContext;

/**
 * @author Xavier Maysonnave
 * 
 */
public interface IProductionPlanInvocationProductionContext<P extends ProductionPlanInvocation, T extends ProductionPlan> extends IInvocationProductionContext<P, T> {
    // Nothing to do
}
