/**
 * <copyright>
 *
 *  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
 * 
 * </copyright>
 */

package org.eclipse.egf.emf.pattern.codegen.model;

import org.eclipse.egf.emf.pattern.codegen.jet.CodegenJetTemplateSection;

/**
 * @author Matthieu Helleboid
 * 
 */
public class JetAbstractPatternInfo extends PatternInfo {

    protected CodegenJetTemplateSection section;

    public JetAbstractPatternInfo() {
        super();
    }

    public CodegenJetTemplateSection getSection() {
        return section;
    }

    public void setSection(CodegenJetTemplateSection section) {
        this.section = section;
    }

}