// StaticLabel
package org.eclipse.stem.core.graph;

/*******************************************************************************
 * Copyright (c) 2008 IBM Corporation 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

import org.eclipse.stem.core.modifier.Modifiable;

/**
 * A <code>StaticLabel</code> is a marker class.
 * 
 * @see StaticNodeLabel
 * @see StaticEdgeLabel
 * 
 * @model abstract="true"
 */
public interface StaticLabel extends Label, Modifiable {
	// Nothing
} // StaticLabel
