/*******************************************************************************
 * Copyright (c) 2004, 2005 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
 *******************************************************************************/
package org.eclipse.wst.html.core.internal.contentmodel;



import java.lang.reflect.Field;

import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;

/**
 * Factory for entity declarations.
 */
final class EntityCollection extends DeclCollection implements org.eclipse.wst.html.core.internal.provisional.HTML40Namespace.EntityName {


	private static class Ids {
		public static final int ID_AACUTE_L = 0;
		public static final int ID_AACUTE_U = 1;
		public static final int ID_ACIRC_L = 2;
		public static final int ID_ACIRC_U = 3;
		public static final int ID_ACUTE = 4;
		public static final int ID_AELIG_L = 5;
		public static final int ID_AELIG_U = 6;
		public static final int ID_AGRAVE_L = 7;
		public static final int ID_AGRAVE_U = 8;
		public static final int ID_ALEFSYM = 9;
		public static final int ID_ALPHA_L = 10;
		public static final int ID_ALPHA_U = 11;
		public static final int ID_AMP = 12;
		public static final int ID_AND = 13;
		public static final int ID_ANG = 14;
		public static final int ID_ARING_L = 15;
		public static final int ID_ARING_U = 16;
		public static final int ID_ASYMP = 17;
		public static final int ID_ATILDE_L = 18;
		public static final int ID_ATILDE_U = 19;
		public static final int ID_AUML_L = 20;
		public static final int ID_AUML_U = 21;
		public static final int ID_BDQUO = 22;
		public static final int ID_BETA_L = 23;
		public static final int ID_BETA_U = 24;
		public static final int ID_BRVBAR = 25;
		public static final int ID_BULL = 26;
		public static final int ID_CAP = 27;
		public static final int ID_CCEDIL_L = 28;
		public static final int ID_CCEDIL_U = 29;
		public static final int ID_CEDIL = 30;
		public static final int ID_CENT = 31;
		public static final int ID_CHI_L = 32;
		public static final int ID_CHI_U = 33;
		public static final int ID_CIRC = 34;
		public static final int ID_CLUBS = 35;
		public static final int ID_CONG = 36;
		public static final int ID_COPY = 37;
		public static final int ID_CRARR = 38;
		public static final int ID_CUP = 39;
		public static final int ID_CURREN = 40;
		public static final int ID_DAGGER_L = 41;
		public static final int ID_DAGGER_U = 42;
		public static final int ID_DARR_L = 43;
		public static final int ID_DARR_U = 44;
		public static final int ID_DEG = 45;
		public static final int ID_DELTA_L = 46;
		public static final int ID_DELTA_U = 47;
		public static final int ID_DIAMS = 48;
		public static final int ID_DIVIDE = 49;
		public static final int ID_EACUTE_L = 50;
		public static final int ID_EACUTE_U = 51;
		public static final int ID_ECIRC_L = 52;
		public static final int ID_ECIRC_U = 53;
		public static final int ID_EGRAVE_L = 54;
		public static final int ID_EGRAVE_U = 55;
		public static final int ID_EMPTY = 56;
		public static final int ID_EMSP = 57;
		public static final int ID_ENSP = 58;
		public static final int ID_EPSILON_L = 59;
		public static final int ID_EPSILON_U = 60;
		public static final int ID_EQUIV = 61;
		public static final int ID_ETA_L = 62;
		public static final int ID_ETA_U = 63;
		public static final int ID_ETH_L = 64;
		public static final int ID_ETH_U = 65;
		public static final int ID_EUML_L = 66;
		public static final int ID_EUML_U = 67;
		public static final int ID_EURO = 68;
		public static final int ID_EXIST = 69;
		public static final int ID_FNOF = 70;
		public static final int ID_FORALL = 71;
		public static final int ID_FRAC12 = 72;
		public static final int ID_FRAC14 = 73;
		public static final int ID_FRAC34 = 74;
		public static final int ID_FRASL = 75;
		public static final int ID_GAMMA_L = 76;
		public static final int ID_GAMMA_U = 77;
		public static final int ID_GE = 78;
		public static final int ID_GT = 79;
		public static final int ID_HARR_L = 80;
		public static final int ID_HARR_U = 81;
		public static final int ID_HEARTS = 82;
		public static final int ID_HELLIP = 83;
		public static final int ID_IACUTE_L = 84;
		public static final int ID_IACUTE_U = 85;
		public static final int ID_ICIRC_L = 86;
		public static final int ID_ICIRC_U = 87;
		public static final int ID_IEXCL = 88;
		public static final int ID_IGRAVE_L = 89;
		public static final int ID_IGRAVE_U = 90;
		public static final int ID_IMAGE = 91;
		public static final int ID_INFIN = 92;
		public static final int ID_INT = 93;
		public static final int ID_IOTA_L = 94;
		public static final int ID_IOTA_U = 95;
		public static final int ID_IQUEST = 96;
		public static final int ID_ISIN = 97;
		public static final int ID_IUML_L = 98;
		public static final int ID_IUML_U = 99;
		public static final int ID_KAPPA_L = 100;
		public static final int ID_KAPPA_U = 101;
		public static final int ID_LAMBDA_L = 102;
		public static final int ID_LAMBDA_U = 103;
		public static final int ID_LANG = 104;
		public static final int ID_LAQUO = 105;
		public static final int ID_LARR_L = 106;
		public static final int ID_LARR_U = 107;
		public static final int ID_LCEIL = 108;
		public static final int ID_LDQUO = 109;
		public static final int ID_LE = 110;
		public static final int ID_LFLOOR = 111;
		public static final int ID_LOWAST = 112;
		public static final int ID_LOZ = 113;
		public static final int ID_LRM = 114;
		public static final int ID_LSAQUO = 115;
		public static final int ID_LSQUO = 116;
		public static final int ID_LT = 117;
		public static final int ID_MACR = 118;
		public static final int ID_MDASH = 119;
		public static final int ID_MICRO = 120;
		public static final int ID_MIDDOT = 121;
		public static final int ID_MINUS = 122;
		public static final int ID_MU_L = 123;
		public static final int ID_MU_U = 124;
		public static final int ID_NABLA = 125;
		public static final int ID_NBSP = 126;
		public static final int ID_NDASH = 127;
		public static final int ID_NE = 128;
		public static final int ID_NI = 129;
		public static final int ID_NOT = 130;
		public static final int ID_NOTIN = 131;
		public static final int ID_NSUB = 132;
		public static final int ID_NTILDE_L = 133;
		public static final int ID_NTILDE_U = 134;
		public static final int ID_NU_L = 135;
		public static final int ID_NU_U = 136;
		public static final int ID_OACUTE_L = 137;
		public static final int ID_OACUTE_U = 138;
		public static final int ID_OCIRC_L = 139;
		public static final int ID_OCIRC_U = 140;
		public static final int ID_OELIG_L = 141;
		public static final int ID_OELIG_U = 142;
		public static final int ID_OGRAVE_L = 143;
		public static final int ID_OGRAVE_U = 144;
		public static final int ID_OLINE = 145;
		public static final int ID_OMEGA_L = 146;
		public static final int ID_OMEGA_U = 147;
		public static final int ID_OMICRON_L = 148;
		public static final int ID_OMICRON_U = 149;
		public static final int ID_OPLUS = 150;
		public static final int ID_OR = 151;
		public static final int ID_ORDF = 152;
		public static final int ID_ORDM = 153;
		public static final int ID_OSLASH_L = 154;
		public static final int ID_OSLASH_U = 155;
		public static final int ID_OTILDE_L = 156;
		public static final int ID_OTILDE_U = 157;
		public static final int ID_OTIMES = 158;
		public static final int ID_OUML_L = 159;
		public static final int ID_OUML_U = 160;
		public static final int ID_PARA = 161;
		public static final int ID_PART = 162;
		public static final int ID_PERMIL = 163;
		public static final int ID_PERP = 164;
		public static final int ID_PHI_L = 165;
		public static final int ID_PHI_U = 166;
		public static final int ID_PIV = 167;
		public static final int ID_PI_L = 168;
		public static final int ID_PI_U = 169;
		public static final int ID_PLUSMN = 170;
		public static final int ID_POUND = 171;
		public static final int ID_PRIME_L = 172;
		public static final int ID_PRIME_U = 173;
		public static final int ID_PROD = 174;
		public static final int ID_PROP = 175;
		public static final int ID_PSI_L = 176;
		public static final int ID_PSI_U = 177;
		public static final int ID_QUOT = 178;
		public static final int ID_RADIC = 179;
		public static final int ID_RANG = 180;
		public static final int ID_RAQUO = 181;
		public static final int ID_RARR_L = 182;
		public static final int ID_RARR_U = 183;
		public static final int ID_RCEIL = 184;
		public static final int ID_RDQUO = 185;
		public static final int ID_REAL = 186;
		public static final int ID_REG = 187;
		public static final int ID_RFLOOR = 188;
		public static final int ID_RHO_L = 189;
		public static final int ID_RHO_U = 190;
		public static final int ID_RLM = 191;
		public static final int ID_RSAQUO = 192;
		public static final int ID_RSQUO = 193;
		public static final int ID_SBQUO = 194;
		public static final int ID_SCARON_L = 195;
		public static final int ID_SCARON_U = 196;
		public static final int ID_SDOT = 197;
		public static final int ID_SECT = 198;
		public static final int ID_SHY = 199;
		public static final int ID_SIGMAF = 200;
		public static final int ID_SIGMA_L = 201;
		public static final int ID_SIGMA_U = 202;
		public static final int ID_SIM = 203;
		public static final int ID_SPADES = 204;
		public static final int ID_SUB = 205;
		public static final int ID_SUBE = 206;
		public static final int ID_SUM = 207;
		public static final int ID_SUP = 208;
		public static final int ID_SUP1 = 209;
		public static final int ID_SUP2 = 210;
		public static final int ID_SUP3 = 211;
		public static final int ID_SUPE = 212;
		public static final int ID_SZLIG = 213;
		public static final int ID_TAU_L = 214;
		public static final int ID_TAU_U = 215;
		public static final int ID_THERE4 = 216;
		public static final int ID_THETASYM = 217;
		public static final int ID_THETA_L = 218;
		public static final int ID_THETA_U = 219;
		public static final int ID_THINSP = 220;
		public static final int ID_THORN_L = 221;
		public static final int ID_THORN_U = 222;
		public static final int ID_TILDE = 223;
		public static final int ID_TIMES = 224;
		public static final int ID_TRADE = 225;
		public static final int ID_UACUTE_L = 226;
		public static final int ID_UACUTE_U = 227;
		public static final int ID_UARR_L = 228;
		public static final int ID_UARR_U = 229;
		public static final int ID_UCIRC_L = 230;
		public static final int ID_UCIRC_U = 231;
		public static final int ID_UGRAVE_L = 232;
		public static final int ID_UGRAVE_U = 233;
		public static final int ID_UML = 234;
		public static final int ID_UPSIH = 235;
		public static final int ID_UPSILON_L = 236;
		public static final int ID_UPSILON_U = 237;
		public static final int ID_UUML_L = 238;
		public static final int ID_UUML_U = 239;
		public static final int ID_WEIERP = 240;
		public static final int ID_XI_L = 241;
		public static final int ID_XI_U = 242;
		public static final int ID_YACUTE_L = 243;
		public static final int ID_YACUTE_U = 244;
		public static final int ID_YEN = 245;
		public static final int ID_YUML_L = 246;
		public static final int ID_YUML_U = 247;
		public static final int ID_ZETA_L = 248;
		public static final int ID_ZETA_U = 249;
		public static final int ID_ZWJ = 250;
		public static final int ID_ZWNJ = 251;

		public static int getNumOfIds() {
			if (numofids != -1)
				return numofids;

			// NOTE: If the reflection is too slow, this method should
			// just return the literal value, like 252.
			// -- 5/24/2001
			Class clazz = Ids.class;
			Field[] fields = clazz.getFields();
			numofids = 0;
			for (int i = 0; i < fields.length; i++) {
				String name = fields[i].getName();
				if (name.startsWith("ID_"))//$NON-NLS-1$
					numofids++;
			}
			return numofids;
		}

		// chache the result of the reflection.
		private static int numofids = -1;
	}

	private static String[] names = null;

	static {
		names = new String[Ids.getNumOfIds()];
		names[Ids.ID_AACUTE_L] = AACUTE_L;
		names[Ids.ID_AACUTE_U] = AACUTE_U;
		names[Ids.ID_ACIRC_L] = ACIRC_L;
		names[Ids.ID_ACIRC_U] = ACIRC_U;
		names[Ids.ID_ACUTE] = ACUTE;
		names[Ids.ID_AELIG_L] = AELIG_L;
		names[Ids.ID_AELIG_U] = AELIG_U;
		names[Ids.ID_AGRAVE_L] = AGRAVE_L;
		names[Ids.ID_AGRAVE_U] = AGRAVE_U;
		names[Ids.ID_ALEFSYM] = ALEFSYM;
		names[Ids.ID_ALPHA_L] = ALPHA_L;
		names[Ids.ID_ALPHA_U] = ALPHA_U;
		names[Ids.ID_AMP] = AMP;
		names[Ids.ID_AND] = AND;
		names[Ids.ID_ANG] = ANG;
		names[Ids.ID_ARING_L] = ARING_L;
		names[Ids.ID_ARING_U] = ARING_U;
		names[Ids.ID_ASYMP] = ASYMP;
		names[Ids.ID_ATILDE_L] = ATILDE_L;
		names[Ids.ID_ATILDE_U] = ATILDE_U;
		names[Ids.ID_AUML_L] = AUML_L;
		names[Ids.ID_AUML_U] = AUML_U;
		names[Ids.ID_BDQUO] = BDQUO;
		names[Ids.ID_BETA_L] = BETA_L;
		names[Ids.ID_BETA_U] = BETA_U;
		names[Ids.ID_BRVBAR] = BRVBAR;
		names[Ids.ID_BULL] = BULL;
		names[Ids.ID_CAP] = CAP;
		names[Ids.ID_CCEDIL_L] = CCEDIL_L;
		names[Ids.ID_CCEDIL_U] = CCEDIL_U;
		names[Ids.ID_CEDIL] = CEDIL;
		names[Ids.ID_CENT] = CENT;
		names[Ids.ID_CHI_L] = CHI_L;
		names[Ids.ID_CHI_U] = CHI_U;
		names[Ids.ID_CIRC] = CIRC;
		names[Ids.ID_CLUBS] = CLUBS;
		names[Ids.ID_CONG] = CONG;
		names[Ids.ID_COPY] = COPY;
		names[Ids.ID_CRARR] = CRARR;
		names[Ids.ID_CUP] = CUP;
		names[Ids.ID_CURREN] = CURREN;
		names[Ids.ID_DAGGER_L] = DAGGER_L;
		names[Ids.ID_DAGGER_U] = DAGGER_U;
		names[Ids.ID_DARR_L] = DARR_L;
		names[Ids.ID_DARR_U] = DARR_U;
		names[Ids.ID_DEG] = DEG;
		names[Ids.ID_DELTA_L] = DELTA_L;
		names[Ids.ID_DELTA_U] = DELTA_U;
		names[Ids.ID_DIAMS] = DIAMS;
		names[Ids.ID_DIVIDE] = DIVIDE;
		names[Ids.ID_EACUTE_L] = EACUTE_L;
		names[Ids.ID_EACUTE_U] = EACUTE_U;
		names[Ids.ID_ECIRC_L] = ECIRC_L;
		names[Ids.ID_ECIRC_U] = ECIRC_U;
		names[Ids.ID_EGRAVE_L] = EGRAVE_L;
		names[Ids.ID_EGRAVE_U] = EGRAVE_U;
		names[Ids.ID_EMPTY] = EMPTY;
		names[Ids.ID_EMSP] = EMSP;
		names[Ids.ID_ENSP] = ENSP;
		names[Ids.ID_EPSILON_L] = EPSILON_L;
		names[Ids.ID_EPSILON_U] = EPSILON_U;
		names[Ids.ID_EQUIV] = EQUIV;
		names[Ids.ID_ETA_L] = ETA_L;
		names[Ids.ID_ETA_U] = ETA_U;
		names[Ids.ID_ETH_L] = ETH_L;
		names[Ids.ID_ETH_U] = ETH_U;
		names[Ids.ID_EUML_L] = EUML_L;
		names[Ids.ID_EUML_U] = EUML_U;
		names[Ids.ID_EURO] = EURO;
		names[Ids.ID_EXIST] = EXIST;
		names[Ids.ID_FNOF] = FNOF;
		names[Ids.ID_FORALL] = FORALL;
		names[Ids.ID_FRAC12] = FRAC12;
		names[Ids.ID_FRAC14] = FRAC14;
		names[Ids.ID_FRAC34] = FRAC34;
		names[Ids.ID_FRASL] = FRASL;
		names[Ids.ID_GAMMA_L] = GAMMA_L;
		names[Ids.ID_GAMMA_U] = GAMMA_U;
		names[Ids.ID_GE] = GE;
		names[Ids.ID_GT] = GT;
		names[Ids.ID_HARR_L] = HARR_L;
		names[Ids.ID_HARR_U] = HARR_U;
		names[Ids.ID_HEARTS] = HEARTS;
		names[Ids.ID_HELLIP] = HELLIP;
		names[Ids.ID_IACUTE_L] = IACUTE_L;
		names[Ids.ID_IACUTE_U] = IACUTE_U;
		names[Ids.ID_ICIRC_L] = ICIRC_L;
		names[Ids.ID_ICIRC_U] = ICIRC_U;
		names[Ids.ID_IEXCL] = IEXCL;
		names[Ids.ID_IGRAVE_L] = IGRAVE_L;
		names[Ids.ID_IGRAVE_U] = IGRAVE_U;
		names[Ids.ID_IMAGE] = IMAGE;
		names[Ids.ID_INFIN] = INFIN;
		names[Ids.ID_INT] = INT;
		names[Ids.ID_IOTA_L] = IOTA_L;
		names[Ids.ID_IOTA_U] = IOTA_U;
		names[Ids.ID_IQUEST] = IQUEST;
		names[Ids.ID_ISIN] = ISIN;
		names[Ids.ID_IUML_L] = IUML_L;
		names[Ids.ID_IUML_U] = IUML_U;
		names[Ids.ID_KAPPA_L] = KAPPA_L;
		names[Ids.ID_KAPPA_U] = KAPPA_U;
		names[Ids.ID_LAMBDA_L] = LAMBDA_L;
		names[Ids.ID_LAMBDA_U] = LAMBDA_U;
		names[Ids.ID_LANG] = LANG;
		names[Ids.ID_LAQUO] = LAQUO;
		names[Ids.ID_LARR_L] = LARR_L;
		names[Ids.ID_LARR_U] = LARR_U;
		names[Ids.ID_LCEIL] = LCEIL;
		names[Ids.ID_LDQUO] = LDQUO;
		names[Ids.ID_LE] = LE;
		names[Ids.ID_LFLOOR] = LFLOOR;
		names[Ids.ID_LOWAST] = LOWAST;
		names[Ids.ID_LOZ] = LOZ;
		names[Ids.ID_LRM] = LRM;
		names[Ids.ID_LSAQUO] = LSAQUO;
		names[Ids.ID_LSQUO] = LSQUO;
		names[Ids.ID_LT] = LT;
		names[Ids.ID_MACR] = MACR;
		names[Ids.ID_MDASH] = MDASH;
		names[Ids.ID_MICRO] = MICRO;
		names[Ids.ID_MIDDOT] = MIDDOT;
		names[Ids.ID_MINUS] = MINUS;
		names[Ids.ID_MU_L] = MU_L;
		names[Ids.ID_MU_U] = MU_U;
		names[Ids.ID_NABLA] = NABLA;
		names[Ids.ID_NBSP] = NBSP;
		names[Ids.ID_NDASH] = NDASH;
		names[Ids.ID_NE] = NE;
		names[Ids.ID_NI] = NI;
		names[Ids.ID_NOT] = NOT;
		names[Ids.ID_NOTIN] = NOTIN;
		names[Ids.ID_NSUB] = NSUB;
		names[Ids.ID_NTILDE_L] = NTILDE_L;
		names[Ids.ID_NTILDE_U] = NTILDE_U;
		names[Ids.ID_NU_L] = NU_L;
		names[Ids.ID_NU_U] = NU_U;
		names[Ids.ID_OACUTE_L] = OACUTE_L;
		names[Ids.ID_OACUTE_U] = OACUTE_U;
		names[Ids.ID_OCIRC_L] = OCIRC_L;
		names[Ids.ID_OCIRC_U] = OCIRC_U;
		names[Ids.ID_OELIG_L] = OELIG_L;
		names[Ids.ID_OELIG_U] = OELIG_U;
		names[Ids.ID_OGRAVE_L] = OGRAVE_L;
		names[Ids.ID_OGRAVE_U] = OGRAVE_U;
		names[Ids.ID_OLINE] = OLINE;
		names[Ids.ID_OMEGA_L] = OMEGA_L;
		names[Ids.ID_OMEGA_U] = OMEGA_U;
		names[Ids.ID_OMICRON_L] = OMICRON_L;
		names[Ids.ID_OMICRON_U] = OMICRON_U;
		names[Ids.ID_OPLUS] = OPLUS;
		names[Ids.ID_OR] = OR;
		names[Ids.ID_ORDF] = ORDF;
		names[Ids.ID_ORDM] = ORDM;
		names[Ids.ID_OSLASH_L] = OSLASH_L;
		names[Ids.ID_OSLASH_U] = OSLASH_U;
		names[Ids.ID_OTILDE_L] = OTILDE_L;
		names[Ids.ID_OTILDE_U] = OTILDE_U;
		names[Ids.ID_OTIMES] = OTIMES;
		names[Ids.ID_OUML_L] = OUML_L;
		names[Ids.ID_OUML_U] = OUML_U;
		names[Ids.ID_PARA] = PARA;
		names[Ids.ID_PART] = PART;
		names[Ids.ID_PERMIL] = PERMIL;
		names[Ids.ID_PERP] = PERP;
		names[Ids.ID_PHI_L] = PHI_L;
		names[Ids.ID_PHI_U] = PHI_U;
		names[Ids.ID_PIV] = PIV;
		names[Ids.ID_PI_L] = PI_L;
		names[Ids.ID_PI_U] = PI_U;
		names[Ids.ID_PLUSMN] = PLUSMN;
		names[Ids.ID_POUND] = POUND;
		names[Ids.ID_PRIME_L] = PRIME_L;
		names[Ids.ID_PRIME_U] = PRIME_U;
		names[Ids.ID_PROD] = PROD;
		names[Ids.ID_PROP] = PROP;
		names[Ids.ID_PSI_L] = PSI_L;
		names[Ids.ID_PSI_U] = PSI_U;
		names[Ids.ID_QUOT] = QUOT;
		names[Ids.ID_RADIC] = RADIC;
		names[Ids.ID_RANG] = RANG;
		names[Ids.ID_RAQUO] = RAQUO;
		names[Ids.ID_RARR_L] = RARR_L;
		names[Ids.ID_RARR_U] = RARR_U;
		names[Ids.ID_RCEIL] = RCEIL;
		names[Ids.ID_RDQUO] = RDQUO;
		names[Ids.ID_REAL] = REAL;
		names[Ids.ID_REG] = REG;
		names[Ids.ID_RFLOOR] = RFLOOR;
		names[Ids.ID_RHO_L] = RHO_L;
		names[Ids.ID_RHO_U] = RHO_U;
		names[Ids.ID_RLM] = RLM;
		names[Ids.ID_RSAQUO] = RSAQUO;
		names[Ids.ID_RSQUO] = RSQUO;
		names[Ids.ID_SBQUO] = SBQUO;
		names[Ids.ID_SCARON_L] = SCARON_L;
		names[Ids.ID_SCARON_U] = SCARON_U;
		names[Ids.ID_SDOT] = SDOT;
		names[Ids.ID_SECT] = SECT;
		names[Ids.ID_SHY] = SHY;
		names[Ids.ID_SIGMAF] = SIGMAF;
		names[Ids.ID_SIGMA_L] = SIGMA_L;
		names[Ids.ID_SIGMA_U] = SIGMA_U;
		names[Ids.ID_SIM] = SIM;
		names[Ids.ID_SPADES] = SPADES;
		names[Ids.ID_SUB] = SUB;
		names[Ids.ID_SUBE] = SUBE;
		names[Ids.ID_SUM] = SUM;
		names[Ids.ID_SUP] = SUP;
		names[Ids.ID_SUP1] = SUP1;
		names[Ids.ID_SUP2] = SUP2;
		names[Ids.ID_SUP3] = SUP3;
		names[Ids.ID_SUPE] = SUPE;
		names[Ids.ID_SZLIG] = SZLIG;
		names[Ids.ID_TAU_L] = TAU_L;
		names[Ids.ID_TAU_U] = TAU_U;
		names[Ids.ID_THERE4] = THERE4;
		names[Ids.ID_THETASYM] = THETASYM;
		names[Ids.ID_THETA_L] = THETA_L;
		names[Ids.ID_THETA_U] = THETA_U;
		names[Ids.ID_THINSP] = THINSP;
		names[Ids.ID_THORN_L] = THORN_L;
		names[Ids.ID_THORN_U] = THORN_U;
		names[Ids.ID_TILDE] = TILDE;
		names[Ids.ID_TIMES] = TIMES;
		names[Ids.ID_TRADE] = TRADE;
		names[Ids.ID_UACUTE_L] = UACUTE_L;
		names[Ids.ID_UACUTE_U] = UACUTE_U;
		names[Ids.ID_UARR_L] = UARR_L;
		names[Ids.ID_UARR_U] = UARR_U;
		names[Ids.ID_UCIRC_L] = UCIRC_L;
		names[Ids.ID_UCIRC_U] = UCIRC_U;
		names[Ids.ID_UGRAVE_L] = UGRAVE_L;
		names[Ids.ID_UGRAVE_U] = UGRAVE_U;
		names[Ids.ID_UML] = UML;
		names[Ids.ID_UPSIH] = UPSIH;
		names[Ids.ID_UPSILON_L] = UPSILON_L;
		names[Ids.ID_UPSILON_U] = UPSILON_U;
		names[Ids.ID_UUML_L] = UUML_L;
		names[Ids.ID_UUML_U] = UUML_U;
		names[Ids.ID_WEIERP] = WEIERP;
		names[Ids.ID_XI_L] = XI_L;
		names[Ids.ID_XI_U] = XI_U;
		names[Ids.ID_YACUTE_L] = YACUTE_L;
		names[Ids.ID_YACUTE_U] = YACUTE_U;
		names[Ids.ID_YEN] = YEN;
		names[Ids.ID_YUML_L] = YUML_L;
		names[Ids.ID_YUML_U] = YUML_U;
		names[Ids.ID_ZETA_L] = ZETA_L;
		names[Ids.ID_ZETA_U] = ZETA_U;
		names[Ids.ID_ZWJ] = ZWJ;
		names[Ids.ID_ZWNJ] = ZWNJ;
	}
	private static char[] values = null;

	static {
		values = new char[Ids.getNumOfIds()];
		values[Ids.ID_AACUTE_L] = 225;
		values[Ids.ID_AACUTE_U] = 193;
		values[Ids.ID_ACIRC_L] = 226;
		values[Ids.ID_ACIRC_U] = 194;
		values[Ids.ID_ACUTE] = 180;
		values[Ids.ID_AELIG_L] = 230;
		values[Ids.ID_AELIG_U] = 198;
		values[Ids.ID_AGRAVE_L] = 224;
		values[Ids.ID_AGRAVE_U] = 192;
		values[Ids.ID_ALEFSYM] = 8501;
		values[Ids.ID_ALPHA_L] = 945;
		values[Ids.ID_ALPHA_U] = 913;
		values[Ids.ID_AMP] = 38;
		values[Ids.ID_AND] = 8743;
		values[Ids.ID_ANG] = 8736;
		values[Ids.ID_ARING_L] = 229;
		values[Ids.ID_ARING_U] = 197;
		values[Ids.ID_ASYMP] = 8776;
		values[Ids.ID_ATILDE_L] = 227;
		values[Ids.ID_ATILDE_U] = 195;
		values[Ids.ID_AUML_L] = 228;
		values[Ids.ID_AUML_U] = 196;
		values[Ids.ID_BDQUO] = 8222;
		values[Ids.ID_BETA_L] = 946;
		values[Ids.ID_BETA_U] = 914;
		values[Ids.ID_BRVBAR] = 166;
		values[Ids.ID_BULL] = 8226;
		values[Ids.ID_CAP] = 8745;
		values[Ids.ID_CCEDIL_L] = 231;
		values[Ids.ID_CCEDIL_U] = 199;
		values[Ids.ID_CEDIL] = 184;
		values[Ids.ID_CENT] = 162;
		values[Ids.ID_CHI_L] = 967;
		values[Ids.ID_CHI_U] = 935;
		values[Ids.ID_CIRC] = 710;
		values[Ids.ID_CLUBS] = 9827;
		values[Ids.ID_CONG] = 8773;
		values[Ids.ID_COPY] = 169;
		values[Ids.ID_CRARR] = 8629;
		values[Ids.ID_CUP] = 8746;
		values[Ids.ID_CURREN] = 164;
		values[Ids.ID_DAGGER_L] = 8224;
		values[Ids.ID_DAGGER_U] = 8225;
		values[Ids.ID_DARR_L] = 8595;
		values[Ids.ID_DARR_U] = 8659;
		values[Ids.ID_DEG] = 176;
		values[Ids.ID_DELTA_L] = 948;
		values[Ids.ID_DELTA_U] = 916;
		values[Ids.ID_DIAMS] = 9830;
		values[Ids.ID_DIVIDE] = 247;
		values[Ids.ID_EACUTE_L] = 233;
		values[Ids.ID_EACUTE_U] = 201;
		values[Ids.ID_ECIRC_L] = 234;
		values[Ids.ID_ECIRC_U] = 202;
		values[Ids.ID_EGRAVE_L] = 232;
		values[Ids.ID_EGRAVE_U] = 200;
		values[Ids.ID_EMPTY] = 8709;
		values[Ids.ID_EMSP] = 8195;
		values[Ids.ID_ENSP] = 8194;
		values[Ids.ID_EPSILON_L] = 949;
		values[Ids.ID_EPSILON_U] = 917;
		values[Ids.ID_EQUIV] = 8801;
		values[Ids.ID_ETA_L] = 951;
		values[Ids.ID_ETA_U] = 919;
		values[Ids.ID_ETH_L] = 240;
		values[Ids.ID_ETH_U] = 208;
		values[Ids.ID_EUML_L] = 235;
		values[Ids.ID_EUML_U] = 203;
		values[Ids.ID_EURO] = 8364;
		values[Ids.ID_EXIST] = 8707;
		values[Ids.ID_FNOF] = 402;
		values[Ids.ID_FORALL] = 8704;
		values[Ids.ID_FRAC12] = 189;
		values[Ids.ID_FRAC14] = 188;
		values[Ids.ID_FRAC34] = 190;
		values[Ids.ID_FRASL] = 8260;
		values[Ids.ID_GAMMA_L] = 947;
		values[Ids.ID_GAMMA_U] = 915;
		values[Ids.ID_GE] = 8805;
		values[Ids.ID_GT] = 62;
		values[Ids.ID_HARR_L] = 8596;
		values[Ids.ID_HARR_U] = 8660;
		values[Ids.ID_HEARTS] = 9829;
		values[Ids.ID_HELLIP] = 8230;
		values[Ids.ID_IACUTE_L] = 237;
		values[Ids.ID_IACUTE_U] = 205;
		values[Ids.ID_ICIRC_L] = 238;
		values[Ids.ID_ICIRC_U] = 206;
		values[Ids.ID_IEXCL] = 161;
		values[Ids.ID_IGRAVE_L] = 236;
		values[Ids.ID_IGRAVE_U] = 204;
		values[Ids.ID_IMAGE] = 8465;
		values[Ids.ID_INFIN] = 8734;
		values[Ids.ID_INT] = 8747;
		values[Ids.ID_IOTA_L] = 953;
		values[Ids.ID_IOTA_U] = 921;
		values[Ids.ID_IQUEST] = 191;
		values[Ids.ID_ISIN] = 8712;
		values[Ids.ID_IUML_L] = 239;
		values[Ids.ID_IUML_U] = 207;
		values[Ids.ID_KAPPA_L] = 954;
		values[Ids.ID_KAPPA_U] = 922;
		values[Ids.ID_LAMBDA_L] = 955;
		values[Ids.ID_LAMBDA_U] = 923;
		values[Ids.ID_LANG] = 9001;
		values[Ids.ID_LAQUO] = 171;
		values[Ids.ID_LARR_L] = 8592;
		values[Ids.ID_LARR_U] = 8656;
		values[Ids.ID_LCEIL] = 8968;
		values[Ids.ID_LDQUO] = 8220;
		values[Ids.ID_LE] = 8804;
		values[Ids.ID_LFLOOR] = 8970;
		values[Ids.ID_LOWAST] = 8727;
		values[Ids.ID_LOZ] = 9674;
		values[Ids.ID_LRM] = 8206;
		values[Ids.ID_LSAQUO] = 8249;
		values[Ids.ID_LSQUO] = 8216;
		values[Ids.ID_LT] = 60;
		values[Ids.ID_MACR] = 175;
		values[Ids.ID_MDASH] = 8212;
		values[Ids.ID_MICRO] = 181;
		values[Ids.ID_MIDDOT] = 183;
		values[Ids.ID_MINUS] = 8722;
		values[Ids.ID_MU_L] = 956;
		values[Ids.ID_MU_U] = 924;
		values[Ids.ID_NABLA] = 8711;
		values[Ids.ID_NBSP] = 160;
		values[Ids.ID_NDASH] = 8211;
		values[Ids.ID_NE] = 8800;
		values[Ids.ID_NI] = 8715;
		values[Ids.ID_NOT] = 172;
		values[Ids.ID_NOTIN] = 8713;
		values[Ids.ID_NSUB] = 8836;
		values[Ids.ID_NTILDE_L] = 241;
		values[Ids.ID_NTILDE_U] = 209;
		values[Ids.ID_NU_L] = 957;
		values[Ids.ID_NU_U] = 925;
		values[Ids.ID_OACUTE_L] = 243;
		values[Ids.ID_OACUTE_U] = 211;
		values[Ids.ID_OCIRC_L] = 244;
		values[Ids.ID_OCIRC_U] = 212;
		values[Ids.ID_OELIG_L] = 339;
		values[Ids.ID_OELIG_U] = 338;
		values[Ids.ID_OGRAVE_L] = 242;
		values[Ids.ID_OGRAVE_U] = 210;
		values[Ids.ID_OLINE] = 8254;
		values[Ids.ID_OMEGA_L] = 969;
		values[Ids.ID_OMEGA_U] = 937;
		values[Ids.ID_OMICRON_L] = 959;
		values[Ids.ID_OMICRON_U] = 927;
		values[Ids.ID_OPLUS] = 8853;
		values[Ids.ID_OR] = 8744;
		values[Ids.ID_ORDF] = 170;
		values[Ids.ID_ORDM] = 186;
		values[Ids.ID_OSLASH_L] = 248;
		values[Ids.ID_OSLASH_U] = 216;
		values[Ids.ID_OTILDE_L] = 245;
		values[Ids.ID_OTILDE_U] = 213;
		values[Ids.ID_OTIMES] = 8855;
		values[Ids.ID_OUML_L] = 246;
		values[Ids.ID_OUML_U] = 214;
		values[Ids.ID_PARA] = 182;
		values[Ids.ID_PART] = 8706;
		values[Ids.ID_PERMIL] = 8240;
		values[Ids.ID_PERP] = 8869;
		values[Ids.ID_PHI_L] = 966;
		values[Ids.ID_PHI_U] = 934;
		values[Ids.ID_PIV] = 982;
		values[Ids.ID_PI_L] = 960;
		values[Ids.ID_PI_U] = 928;
		values[Ids.ID_PLUSMN] = 177;
		values[Ids.ID_POUND] = 163;
		values[Ids.ID_PRIME_L] = 8242;
		values[Ids.ID_PRIME_U] = 8243;
		values[Ids.ID_PROD] = 8719;
		values[Ids.ID_PROP] = 8733;
		values[Ids.ID_PSI_L] = 968;
		values[Ids.ID_PSI_U] = 936;
		values[Ids.ID_QUOT] = 34;
		values[Ids.ID_RADIC] = 8730;
		values[Ids.ID_RANG] = 9002;
		values[Ids.ID_RAQUO] = 187;
		values[Ids.ID_RARR_L] = 8594;
		values[Ids.ID_RARR_U] = 8658;
		values[Ids.ID_RCEIL] = 8969;
		values[Ids.ID_RDQUO] = 8221;
		values[Ids.ID_REAL] = 8476;
		values[Ids.ID_REG] = 174;
		values[Ids.ID_RFLOOR] = 8971;
		values[Ids.ID_RHO_L] = 961;
		values[Ids.ID_RHO_U] = 929;
		values[Ids.ID_RLM] = 8207;
		values[Ids.ID_RSAQUO] = 8250;
		values[Ids.ID_RSQUO] = 8217;
		values[Ids.ID_SBQUO] = 8218;
		values[Ids.ID_SCARON_L] = 353;
		values[Ids.ID_SCARON_U] = 352;
		values[Ids.ID_SDOT] = 8901;
		values[Ids.ID_SECT] = 167;
		values[Ids.ID_SHY] = 173;
		values[Ids.ID_SIGMAF] = 962;
		values[Ids.ID_SIGMA_L] = 963;
		values[Ids.ID_SIGMA_U] = 931;
		values[Ids.ID_SIM] = 8764;
		values[Ids.ID_SPADES] = 9824;
		values[Ids.ID_SUB] = 8834;
		values[Ids.ID_SUBE] = 8838;
		values[Ids.ID_SUM] = 8721;
		values[Ids.ID_SUP] = 8835;
		values[Ids.ID_SUP1] = 185;
		values[Ids.ID_SUP2] = 178;
		values[Ids.ID_SUP3] = 179;
		values[Ids.ID_SUPE] = 8839;
		values[Ids.ID_SZLIG] = 223;
		values[Ids.ID_TAU_L] = 964;
		values[Ids.ID_TAU_U] = 932;
		values[Ids.ID_THERE4] = 8756;
		values[Ids.ID_THETASYM] = 977;
		values[Ids.ID_THETA_L] = 952;
		values[Ids.ID_THETA_U] = 920;
		values[Ids.ID_THINSP] = 8201;
		values[Ids.ID_THORN_L] = 254;
		values[Ids.ID_THORN_U] = 222;
		values[Ids.ID_TILDE] = 732;
		values[Ids.ID_TIMES] = 215;
		values[Ids.ID_TRADE] = 8482;
		values[Ids.ID_UACUTE_L] = 250;
		values[Ids.ID_UACUTE_U] = 218;
		values[Ids.ID_UARR_L] = 8593;
		values[Ids.ID_UARR_U] = 8657;
		values[Ids.ID_UCIRC_L] = 251;
		values[Ids.ID_UCIRC_U] = 219;
		values[Ids.ID_UGRAVE_L] = 249;
		values[Ids.ID_UGRAVE_U] = 217;
		values[Ids.ID_UML] = 168;
		values[Ids.ID_UPSIH] = 978;
		values[Ids.ID_UPSILON_L] = 965;
		values[Ids.ID_UPSILON_U] = 933;
		values[Ids.ID_UUML_L] = 252;
		values[Ids.ID_UUML_U] = 220;
		values[Ids.ID_WEIERP] = 8472;
		values[Ids.ID_XI_L] = 958;
		values[Ids.ID_XI_U] = 926;
		values[Ids.ID_YACUTE_L] = 253;
		values[Ids.ID_YACUTE_U] = 221;
		values[Ids.ID_YEN] = 165;
		values[Ids.ID_YUML_L] = 255;
		values[Ids.ID_YUML_U] = 376;
		values[Ids.ID_ZETA_L] = 950;
		values[Ids.ID_ZETA_U] = 918;
		values[Ids.ID_ZWJ] = 8205;
		values[Ids.ID_ZWNJ] = 8204;
	}

	/**
	 */
	public EntityCollection() {
		super(names, STRICT_CASE);
	}

	/**
	 * Create an entity declaration.
	 * @return org.eclipse.wst.xml.core.internal.contentmodel.CMNode
	 * @param attrName java.lang.String
	 */
	protected CMNode create(String entityName) {
		int id = getID(entityName);
		if (id == ID_UNKNOWN)
			return null;

		String value = String.valueOf(values[id]);
		HTMLEntityDeclImpl dec = new HTMLEntityDeclImpl(entityName, value);

		return dec;
	}
}
