/**
 * <copyright>
 * </copyright>
 *
 * $Id: JavaIdentifier.java,v 1.1 2010/03/18 06:24:37 cbateman Exp $
 */
package org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Java Identifier</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * 
 * 
 *     The java-identifierType defines a Java identifier.
 *     The users of this type should further verify that
 *     the content does not contain Java reserved keywords.
 * 
 *       
 * <!-- end-model-doc -->
 *
 *
 * @see org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.FaceletTaglibPackage#getJavaIdentifier()
 * @model extendedMetaData="name='java-identifierType' kind='simple'"
 * @generated
 */
public interface JavaIdentifier extends IdentifiableStringValue
{
 // JavaIdentifier
} 
