/*******************************************************************************
 * Copyright (c) 2004-2008 Akos Horvath, Gergely Varro and Daniel Varro
 * 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:
 *    Akos Horvath, Gergely Varro - initial API and implementation
 *******************************************************************************/

 package org.eclipse.viatra2.gtasm.patternmatcher.impl.patternmatcher.internal.searchgraph;

import org.eclipse.viatra2.gtasm.patternmatcher.impl.patternmatcher.internal.searchgraph.traceability.ConstantNodeTraceabilityElement;

public class ConstantSearchGraphNode extends SearchGraphNode {
    private String element;
    private ConstantNodeTraceabilityElement traceabilityElement;

	public String getElement() {
		return element;
	}

	public void setElement(String element) {
		this.element = element;
	}

	@Override
	public ConstantNodeTraceabilityElement getTraceabilityElement() {
		return traceabilityElement;
	}
	
	public void setTraceabilityElement(ConstantNodeTraceabilityElement element) {
		traceabilityElement = element;
	}
}
