0001 
0002 /*
0003  *  JScripter Standard 1.0 - To Script In Java
0004  *  Copyright (C) 2008-2011  J.J.Liu<jianjunliu@126.com> <http://www.jscripter.org>
0005  *  
0006  *  This program is free software: you can redistribute it and/or modify
0007  *  it under the terms of the GNU Affero General Public License as published by
0008  *  the Free Software Foundation, either version 3 of the License, or
0009  *  (at your option) any later version.
0010  *  
0011  *  This program is distributed in the hope that it will be useful,
0012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014  *  GNU Affero General Public License for more details.
0015  *  
0016  *  You should have received a copy of the GNU Affero General Public License
0017  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
0018  */
0019 
0020 package js.dom;
0021 
0022 import js.*;
0023 import js.core.*;
0024 import js.user.*;
0025 
0026 /**
0027  * <p>An <b>opaque</b> interface for DOM Level 2 Core implementors.</p>
0028  *
0029  * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0030  *
0031  * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
0032  * generated into the target codes. Re-compilers must exit with error on the operations of
0033  * accessing that kind of class objects.
0034  * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
0035  * and <tt>instanceof</tt> to it always <tt>true</tt>.
0036  */
0037 public interface DOM2Core
0038 {
0039     /**
0040      * <p>An <b>opaque</b> class representing the global <tt>Attr</tt> class of JavaScript.</p>
0041      *
0042      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0043      * 
0044      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
0045      * generated into the target codes. Re-compilers must exit with error on the operations of
0046      * accessing that kind of class objects.
0047      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
0048      * and <tt>instanceof</tt> to it always <tt>true</tt>.
0049      */
0050     public class Attr extends JsClass
0051     {
0052         /**
0053          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
0054          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
0055          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
0056          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
0057          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
0058          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
0059          * either circumstance, the field names must be exactly same as the member names, as 
0060          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
0061          * based on the field names.</p>
0062          *
0063          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0064          * 
0065          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
0066          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
0067          * of class objects.
0068          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
0069          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
0070          * <pre>q.m</pre>
0071          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
0072          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
0073          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
0074          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
0075          * <pre>m</pre>
0076          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
0077          * error on the access to <b>opaque</b> fields declared by this class under any other 
0078          * circumstances.
0079          */
0080         public static class Member extends JsClass.Member
0081         {
0082             public Member(JsObject.Member q, Mid mid) {
0083                 super(q, mid);
0084             }
0085             public Member(Mid mid) {
0086                 super(mid);
0087             }
0088             @Override
0089             /**
0090              * <p>Evaluates the property, represented by the current member instance, of the
0091              * argument object.</p>
0092              * @param o The argument object
0093              * @return The value of the current member based on the object argument.
0094              * @since 1.0
0095              * @javascript Re-compilers must convert the instance invocation of this method into
0096              * the JavaScript expression: 
0097              * <pre>o.m</pre>
0098              * where <tt>m</tt> is the identifier name resolved from the current member
0099              * instance of the invocation.
0100              */
0101             public Attr with(ObjectLike o) {
0102                 return new Attr(super.with(o));
0103             }
0104             @Override
0105             /**
0106              * <p>Evaluates a property, represented by the current member instance, of the
0107              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
0108              * @return The value of the current member based on the JavaScript global object.
0109              * @since 1.0
0110              * @javascript Re-compilers must convert the instance invocation of this method into
0111              * the JavaScript expression: 
0112              * <pre>m</pre>
0113              * where <tt>m</tt> is the identifier name resolved from the current member
0114              * instance of the invocation.
0115              */
0116             public Attr with() {
0117                 return with(Js.win());
0118             }
0119 
0120             /**
0121              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0122              * name of this field, qualified by the current member instance of the field, and 
0123              * to access the property of the name on an object.</p>
0124              * @since 1.0
0125              * @javascript Re-compilers must resolve the member of this instance field to the
0126              * identifier of the field name appending to the identifier resolved from its 
0127              * qualifying member with a dot in between.
0128              */
0129             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
0130         }
0131 
0132         /**
0133          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
0134          * with the wrapping constructor.</p>
0135          * @param var The argument of an <b>opaque</b> object.
0136          * @since 1.0
0137          * @javascript Re-compilers must ignore the construction operation of this constructor,
0138          * that is, replacing it with its only argument.
0139          */
0140         public Attr(JsObject var) {
0141             super(var(var, (JsFunction<?>)null));
0142         }
0143 
0144         /**
0145          * <p>An <b>opaque</b> static field defining a member that is named by the field name
0146          * without a qualifying member and to access the property of the name on an object.</p>
0147          * @since 1.0
0148          * @javascript Re-compilers must resolve the member of this static field to the
0149          * identifier of the field name.
0150          */
0151         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
0152 
0153         /**
0154          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
0155          * class of JavaScript.</p>
0156          *
0157          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0158          * 
0159          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
0160          * generated into the target codes. Re-compilers must exit with error on the operations of
0161          * accessing that kind of class objects.
0162          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
0163          * and <tt>instanceof</tt> to it always <tt>true</tt>.
0164          */
0165         public static class Prototype extends JsNode
0166         {
0167             /**
0168              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
0169              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
0170              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
0171              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
0172              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
0173              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
0174              * either circumstance, the field names must be exactly same as the member names, as 
0175              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
0176              * based on the field names.</p>
0177              *
0178              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0179              * 
0180              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
0181              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
0182              * of class objects.
0183              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
0184              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
0185              * <pre>q.m</pre>
0186              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
0187              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
0188              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
0189              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
0190              * <pre>m</pre>
0191              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
0192              * error on the access to <b>opaque</b> fields declared by this class under any other 
0193              * circumstances.
0194              */
0195             public static class Member extends JsNode.Member
0196             {
0197                 /**
0198                  * <p>Internally constructs a member based on a qualifying member.</p>
0199                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
0200                  * or <b>internal</b> classes or class members.</p>
0201                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
0202                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
0203                  * declared in the declaring class of this constructor itself or its subclasses. 
0204                  * Under this circumstance, the field names must be exactly same as the member 
0205                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
0206                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
0207                  * to their names appending to the name resolved from the specified qualifying 
0208                  * member with a dot in between.</p>
0209                  * @param q A qualifying member
0210                  * @param mid The ID of the member to construct
0211                  * @since 1.0
0212                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
0213                  */
0214                 public Member(JsObject.Member q, Mid mid) {
0215                     super(q, mid);
0216                 }
0217                 /**
0218                  * <p>Internally constructs a member without a qualifying member.</p>
0219                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
0220                  * or <b>internal</b> classes or class members.</p>
0221                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
0222                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
0223                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
0224                  * itself and its subclasses. Under this circumstance, the field names must be
0225                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
0226                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
0227                  * @param mid The ID of the member to construct
0228                  * @since 1.0
0229                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
0230                  */
0231                 public Member(Mid mid) {
0232                     super(mid);
0233                 }
0234                 @Override
0235                 /**
0236                  * <p>Evaluates the property, represented by the current member instance, of the
0237                  * argument object.</p>
0238                  * @param o The argument object
0239                  * @return The value of the current member based on the object argument.
0240                  * @since 1.0
0241                  * @javascript Re-compilers must convert the instance invocation of this method into
0242                  * the JavaScript expression: 
0243                  * <pre>o.m</pre>
0244                  * where <tt>m</tt> is the identifier name resolved from the current member
0245                  * instance of the invocation.
0246                  */
0247                 public Prototype with(ObjectLike o) {
0248                     return new Prototype(super.with(o));
0249                 }
0250 
0251                 /**
0252                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0253                  * name of this field, qualified by the current member instance of the field, and 
0254                  * to access the property of the name on an object.</p>
0255                  * @since 1.0
0256                  * @see JsAttr#valueOf()
0257                  * @javascript Re-compilers must resolve the member of this instance field to the
0258                  * identifier of the field name appending to the identifier resolved from its 
0259                  * qualifying member with a dot in between.
0260                  */
0261                 public final JsFunction.Member<JsAttr> valueOf = new JsFunction.Member<JsAttr>(this, Members.valueOf);
0262             }
0263 
0264             /**
0265              * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
0266              * with the wrapping constructor.</p>
0267              * @param var The argument of an <b>opaque</b> object.
0268              * @since 1.0
0269              * @javascript Re-compilers must ignore the construction operation of this constructor,
0270              * that is, replacing it with its only argument.
0271              */
0272             public Prototype(JsObject var) {
0273                 super(var(var, (JsFunction<?>)null));
0274             }
0275 
0276             /**
0277              * <p>An <b>opaque</b> static field defining a member that is named by the field name
0278              * without a qualifying member and to access the property of the name on an object.</p>
0279              * @since 1.0
0280              * @see JsAttr#valueOf()
0281              * @javascript Re-compilers must resolve the member of this static field to the
0282              * identifier of the field name.
0283              */
0284             public static final JsFunction.Member<JsAttr> valueOf = new JsFunction.Member<JsAttr>(Members.valueOf);
0285         }
0286     }
0287 
0288     /**
0289      * <p>An <b>opaque</b> class representing the global <tt>CDATASection</tt> class of JavaScript.</p>
0290      *
0291      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0292      * 
0293      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
0294      * generated into the target codes. Re-compilers must exit with error on the operations of
0295      * accessing that kind of class objects.
0296      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
0297      * and <tt>instanceof</tt> to it always <tt>true</tt>.
0298      */
0299     public class CDATASection extends JsClass
0300     {
0301         /**
0302          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
0303          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
0304          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
0305          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
0306          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
0307          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
0308          * either circumstance, the field names must be exactly same as the member names, as 
0309          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
0310          * based on the field names.</p>
0311          *
0312          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0313          * 
0314          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
0315          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
0316          * of class objects.
0317          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
0318          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
0319          * <pre>q.m</pre>
0320          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
0321          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
0322          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
0323          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
0324          * <pre>m</pre>
0325          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
0326          * error on the access to <b>opaque</b> fields declared by this class under any other 
0327          * circumstances.
0328          */
0329         public static class Member extends JsClass.Member
0330         {
0331             public Member(JsObject.Member q, Mid mid) {
0332                 super(q, mid);
0333             }
0334             public Member(Mid mid) {
0335                 super(mid);
0336             }
0337             @Override
0338             /**
0339              * <p>Evaluates the property, represented by the current member instance, of the
0340              * argument object.</p>
0341              * @param o The argument object
0342              * @return The value of the current member based on the object argument.
0343              * @since 1.0
0344              * @javascript Re-compilers must convert the instance invocation of this method into
0345              * the JavaScript expression: 
0346              * <pre>o.m</pre>
0347              * where <tt>m</tt> is the identifier name resolved from the current member
0348              * instance of the invocation.
0349              */
0350             public CDATASection with(ObjectLike o) {
0351                 return new CDATASection(super.with(o));
0352             }
0353             @Override
0354             /**
0355              * <p>Evaluates a property, represented by the current member instance, of the
0356              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
0357              * @return The value of the current member based on the JavaScript global object.
0358              * @since 1.0
0359              * @javascript Re-compilers must convert the instance invocation of this method into
0360              * the JavaScript expression: 
0361              * <pre>m</pre>
0362              * where <tt>m</tt> is the identifier name resolved from the current member
0363              * instance of the invocation.
0364              */
0365             public CDATASection with() {
0366                 return with(Js.win());
0367             }
0368 
0369             /**
0370              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0371              * name of this field, qualified by the current member instance of the field, and 
0372              * to access the property of the name on an object.</p>
0373              * @since 1.0
0374              * @javascript Re-compilers must resolve the member of this instance field to the
0375              * identifier of the field name appending to the identifier resolved from its 
0376              * qualifying member with a dot in between.
0377              */
0378             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
0379         }
0380 
0381         /**
0382          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
0383          * with the wrapping constructor.</p>
0384          * @param var The argument of an <b>opaque</b> object.
0385          * @since 1.0
0386          * @javascript Re-compilers must ignore the construction operation of this constructor,
0387          * that is, replacing it with its only argument.
0388          */
0389         public CDATASection(JsObject var) {
0390             super(var(var, (JsFunction<?>)null));
0391         }
0392 
0393         /**
0394          * <p>An <b>opaque</b> static field defining a member that is named by the field name
0395          * without a qualifying member and to access the property of the name on an object.</p>
0396          * @since 1.0
0397          * @javascript Re-compilers must resolve the member of this static field to the
0398          * identifier of the field name.
0399          */
0400         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
0401 
0402         /**
0403          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
0404          * class of JavaScript.</p>
0405          *
0406          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0407          * 
0408          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
0409          * generated into the target codes. Re-compilers must exit with error on the operations of
0410          * accessing that kind of class objects.
0411          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
0412          * and <tt>instanceof</tt> to it always <tt>true</tt>.
0413          */
0414         public static class Prototype extends JsText
0415         {
0416             /**
0417              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
0418              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
0419              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
0420              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
0421              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
0422              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
0423              * either circumstance, the field names must be exactly same as the member names, as 
0424              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
0425              * based on the field names.</p>
0426              *
0427              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0428              * 
0429              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
0430              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
0431              * of class objects.
0432              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
0433              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
0434              * <pre>q.m</pre>
0435              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
0436              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
0437              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
0438              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
0439              * <pre>m</pre>
0440              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
0441              * error on the access to <b>opaque</b> fields declared by this class under any other 
0442              * circumstances.
0443              */
0444             public static class Member extends JsText.Member
0445             {
0446                 /**
0447                  * <p>Internally constructs a member based on a qualifying member.</p>
0448                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
0449                  * or <b>internal</b> classes or class members.</p>
0450                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
0451                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
0452                  * declared in the declaring class of this constructor itself or its subclasses. 
0453                  * Under this circumstance, the field names must be exactly same as the member 
0454                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
0455                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
0456                  * to their names appending to the name resolved from the specified qualifying 
0457                  * member with a dot in between.</p>
0458                  * @param q A qualifying member
0459                  * @param mid The ID of the member to construct
0460                  * @since 1.0
0461                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
0462                  */
0463                 public Member(JsObject.Member q, Mid mid) {
0464                     super(q, mid);
0465                 }
0466                 /**
0467                  * <p>Internally constructs a member without a qualifying member.</p>
0468                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
0469                  * or <b>internal</b> classes or class members.</p>
0470                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
0471                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
0472                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
0473                  * itself and its subclasses. Under this circumstance, the field names must be
0474                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
0475                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
0476                  * @param mid The ID of the member to construct
0477                  * @since 1.0
0478                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
0479                  */
0480                 public Member(Mid mid) {
0481                     super(mid);
0482                 }
0483                 @Override
0484                 /**
0485                  * <p>Evaluates the property, represented by the current member instance, of the
0486                  * argument object.</p>
0487                  * @param o The argument object
0488                  * @return The value of the current member based on the object argument.
0489                  * @since 1.0
0490                  * @javascript Re-compilers must convert the instance invocation of this method into
0491                  * the JavaScript expression: 
0492                  * <pre>o.m</pre>
0493                  * where <tt>m</tt> is the identifier name resolved from the current member
0494                  * instance of the invocation.
0495                  */
0496                 public Prototype with(ObjectLike o) {
0497                     return new Prototype(super.with(o));
0498                 }
0499 
0500                 /**
0501                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0502                  * name of this field, qualified by the current member instance of the field, and 
0503                  * to access the property of the name on an object.</p>
0504                  * @since 1.0
0505                  * @see JsCDATASection#valueOf()
0506                  * @javascript Re-compilers must resolve the member of this instance field to the
0507                  * identifier of the field name appending to the identifier resolved from its 
0508                  * qualifying member with a dot in between.
0509                  */
0510                 public final JsFunction.Member<JsCDATASection> valueOf = new JsFunction.Member<JsCDATASection>(this, Members.valueOf);
0511             }
0512 
0513             /**
0514              * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
0515              * with the wrapping constructor.</p>
0516              * @param var The argument of an <b>opaque</b> object.
0517              * @since 1.0
0518              * @javascript Re-compilers must ignore the construction operation of this constructor,
0519              * that is, replacing it with its only argument.
0520              */
0521             public Prototype(JsObject var) {
0522                 super(var(var, (JsFunction<?>)null));
0523             }
0524 
0525             /**
0526              * <p>An <b>opaque</b> static field defining a member that is named by the field name
0527              * without a qualifying member and to access the property of the name on an object.</p>
0528              * @since 1.0
0529              * @see JsCDATASection#valueOf()
0530              * @javascript Re-compilers must resolve the member of this static field to the
0531              * identifier of the field name.
0532              */
0533             public static final JsFunction.Member<JsCDATASection> valueOf = new JsFunction.Member<JsCDATASection>(Members.valueOf);
0534         }
0535     }
0536 
0537     /**
0538      * <p>An <b>opaque</b> class representing the global <tt>CharacterData</tt> class of JavaScript.</p>
0539      *
0540      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0541      * 
0542      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
0543      * generated into the target codes. Re-compilers must exit with error on the operations of
0544      * accessing that kind of class objects.
0545      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
0546      * and <tt>instanceof</tt> to it always <tt>true</tt>.
0547      */
0548     public class CharacterData extends JsClass
0549     {
0550         /**
0551          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
0552          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
0553          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
0554          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
0555          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
0556          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
0557          * either circumstance, the field names must be exactly same as the member names, as 
0558          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
0559          * based on the field names.</p>
0560          *
0561          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0562          * 
0563          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
0564          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
0565          * of class objects.
0566          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
0567          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
0568          * <pre>q.m</pre>
0569          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
0570          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
0571          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
0572          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
0573          * <pre>m</pre>
0574          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
0575          * error on the access to <b>opaque</b> fields declared by this class under any other 
0576          * circumstances.
0577          */
0578         public static class Member extends JsClass.Member
0579         {
0580             public Member(JsObject.Member q, Mid mid) {
0581                 super(q, mid);
0582             }
0583             public Member(Mid mid) {
0584                 super(mid);
0585             }
0586             @Override
0587             /**
0588              * <p>Evaluates the property, represented by the current member instance, of the
0589              * argument object.</p>
0590              * @param o The argument object
0591              * @return The value of the current member based on the object argument.
0592              * @since 1.0
0593              * @javascript Re-compilers must convert the instance invocation of this method into
0594              * the JavaScript expression: 
0595              * <pre>o.m</pre>
0596              * where <tt>m</tt> is the identifier name resolved from the current member
0597              * instance of the invocation.
0598              */
0599             public CharacterData with(ObjectLike o) {
0600                 return new CharacterData(super.with(o));
0601             }
0602             @Override
0603             /**
0604              * <p>Evaluates a property, represented by the current member instance, of the
0605              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
0606              * @return The value of the current member based on the JavaScript global object.
0607              * @since 1.0
0608              * @javascript Re-compilers must convert the instance invocation of this method into
0609              * the JavaScript expression: 
0610              * <pre>m</pre>
0611              * where <tt>m</tt> is the identifier name resolved from the current member
0612              * instance of the invocation.
0613              */
0614             public CharacterData with() {
0615                 return with(Js.win());
0616             }
0617 
0618             /**
0619              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0620              * name of this field, qualified by the current member instance of the field, and 
0621              * to access the property of the name on an object.</p>
0622              * @since 1.0
0623              * @javascript Re-compilers must resolve the member of this instance field to the
0624              * identifier of the field name appending to the identifier resolved from its 
0625              * qualifying member with a dot in between.
0626              */
0627             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
0628         }
0629 
0630         /**
0631          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
0632          * with the wrapping constructor.</p>
0633          * @param var The argument of an <b>opaque</b> object.
0634          * @since 1.0
0635          * @javascript Re-compilers must ignore the construction operation of this constructor,
0636          * that is, replacing it with its only argument.
0637          */
0638         public CharacterData(JsObject var) {
0639             super(var(var, (JsFunction<?>)null));
0640         }
0641 
0642         /**
0643          * <p>An <b>opaque</b> static field defining a member that is named by the field name
0644          * without a qualifying member and to access the property of the name on an object.</p>
0645          * @since 1.0
0646          * @javascript Re-compilers must resolve the member of this static field to the
0647          * identifier of the field name.
0648          */
0649         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
0650 
0651         /**
0652          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
0653          * class of JavaScript.</p>
0654          *
0655          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0656          * 
0657          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
0658          * generated into the target codes. Re-compilers must exit with error on the operations of
0659          * accessing that kind of class objects.
0660          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
0661          * and <tt>instanceof</tt> to it always <tt>true</tt>.
0662          */
0663         public static class Prototype extends JsNode
0664         {
0665             /**
0666              * <p>An <b>internal</b> class containing membership data for its enclosing
0667              * opaque class.</p>
0668              * <p>This class is only used inside of <b>opaque</b> or <b>internal</b> classes or
0669              * class members.</p>
0670              *
0671              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0672              * 
0673              * @javascript Re-compilers must report error on resolving an <b>internal</b> class.
0674              */
0675             protected static abstract class Members extends JsNode.Members
0676             {
0677                 /**
0678                  * <p>An <b>internal</b> static field defining a member ID of the field name and
0679                  * used internally to define a member of the same name.</p>
0680                  * @since 1.0
0681                  * @see DOM2Core.CharacterData.Prototype#appendData
0682                  * @see DOM2Core.CharacterData.Prototype.Member#appendData
0683                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0684                  */
0685                 public final static Mid appendData    = id("appendData"   );
0686                 /**
0687                  * <p>An <b>internal</b> static field defining a member ID of the field name and
0688                  * used internally to define a member of the same name.</p>
0689                  * @since 1.0
0690                  * @see DOM2Core.CharacterData.Prototype#deleteData
0691                  * @see DOM2Core.CharacterData.Prototype.Member#deleteData
0692                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0693                  */
0694                 public final static Mid deleteData    = id("deleteData"   );
0695                 /**
0696                  * <p>An <b>internal</b> static field defining a member ID of the field name and
0697                  * used internally to define a member of the same name.</p>
0698                  * @since 1.0
0699                  * @see DOM2Core.CharacterData.Prototype#insertData
0700                  * @see DOM2Core.CharacterData.Prototype.Member#insertData
0701                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0702                  */
0703                 public final static Mid insertData    = id("insertData"   );
0704                 /**
0705                  * <p>An <b>internal</b> static field defining a member ID of the field name and
0706                  * used internally to define a member of the same name.</p>
0707                  * @since 1.0
0708                  * @see DOM2Core.CharacterData.Prototype#replaceData
0709                  * @see DOM2Core.CharacterData.Prototype.Member#replaceData
0710                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0711                  */
0712                 public final static Mid replaceData   = id("replaceData"  );
0713                 /**
0714                  * <p>An <b>internal</b> static field defining a member ID of the field name and
0715                  * used internally to define a member of the same name.</p>
0716                  * @since 1.0
0717                  * @see DOM2Core.CharacterData.Prototype#substringData
0718                  * @see DOM2Core.CharacterData.Prototype.Member#substringData
0719                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0720                  */
0721                 public final static Mid substringData = id("substringData");
0722             }
0723             /**
0724              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
0725              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
0726              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
0727              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
0728              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
0729              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
0730              * either circumstance, the field names must be exactly same as the member names, as 
0731              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
0732              * based on the field names.</p>
0733              *
0734              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0735              * 
0736              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
0737              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
0738              * of class objects.
0739              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
0740              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
0741              * <pre>q.m</pre>
0742              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
0743              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
0744              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
0745              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
0746              * <pre>m</pre>
0747              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
0748              * error on the access to <b>opaque</b> fields declared by this class under any other 
0749              * circumstances.
0750              */
0751             public static class Member extends JsNode.Member
0752             {
0753                 /**
0754                  * <p>Internally constructs a member based on a qualifying member.</p>
0755                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
0756                  * or <b>internal</b> classes or class members.</p>
0757                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
0758                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
0759                  * declared in the declaring class of this constructor itself or its subclasses. 
0760                  * Under this circumstance, the field names must be exactly same as the member 
0761                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
0762                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
0763                  * to their names appending to the name resolved from the specified qualifying 
0764                  * member with a dot in between.</p>
0765                  * @param q A qualifying member
0766                  * @param mid The ID of the member to construct
0767                  * @since 1.0
0768                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
0769                  */
0770                 public Member(JsObject.Member q, Mid mid) {
0771                     super(q, mid);
0772                 }
0773                 /**
0774                  * <p>Internally constructs a member without a qualifying member.</p>
0775                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
0776                  * or <b>internal</b> classes or class members.</p>
0777                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
0778                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
0779                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
0780                  * itself and its subclasses. Under this circumstance, the field names must be
0781                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
0782                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
0783                  * @param mid The ID of the member to construct
0784                  * @since 1.0
0785                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
0786                  */
0787                 public Member(Mid mid) {
0788                     super(mid);
0789                 }
0790                 @Override
0791                 /**
0792                  * <p>Evaluates the property, represented by the current member instance, of the
0793                  * argument object.</p>
0794                  * @param o The argument object
0795                  * @return The value of the current member based on the object argument.
0796                  * @since 1.0
0797                  * @javascript Re-compilers must convert the instance invocation of this method into
0798                  * the JavaScript expression: 
0799                  * <pre>o.m</pre>
0800                  * where <tt>m</tt> is the identifier name resolved from the current member
0801                  * instance of the invocation.
0802                  */
0803                 public Prototype with(ObjectLike o) {
0804                     return new Prototype(super.with(o));
0805                 }
0806 
0807                 /**
0808                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0809                  * name of this field, qualified by the current member instance of the field, and 
0810                  * to access the property of the name on an object.</p>
0811                  * @since 1.0
0812                  * @see JsCharacterData#valueOf()
0813                  * @javascript Re-compilers must resolve the member of this instance field to the
0814                  * identifier of the field name appending to the identifier resolved from its 
0815                  * qualifying member with a dot in between.
0816                  */
0817                 public final JsFunction.Member<JsCharacterData> valueOf = new JsFunction.Member<JsCharacterData>(this, Members.valueOf);
0818                 /**
0819                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0820                  * name of this field, qualified by the current member instance of the field, and 
0821                  * to access the property of the name on an object.</p>
0822                  * @since 1.0
0823                  * @see JsCharacterData#appendData(String)
0824                  * @javascript Re-compilers must resolve the member of this instance field to the
0825                  * identifier of the field name appending to the identifier resolved from its 
0826                  * qualifying member with a dot in between.
0827                  */
0828                 public final JsFunction.Member<?> appendData  = new JsFunction.Member<java.lang.Object>(this, Members.appendData );
0829                 /**
0830                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0831                  * name of this field, qualified by the current member instance of the field, and 
0832                  * to access the property of the name on an object.</p>
0833                  * @since 1.0
0834                  * @see JsCharacterData#deleteData(Number, Number)
0835                  * @javascript Re-compilers must resolve the member of this instance field to the
0836                  * identifier of the field name appending to the identifier resolved from its 
0837                  * qualifying member with a dot in between.
0838                  */
0839                 public final JsFunction.Member<?> deleteData  = new JsFunction.Member<java.lang.Object>(this, Members.deleteData );
0840                 /**
0841                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0842                  * name of this field, qualified by the current member instance of the field, and 
0843                  * to access the property of the name on an object.</p>
0844                  * @since 1.0
0845                  * @see JsCharacterData#insertData(Number, String)
0846                  * @javascript Re-compilers must resolve the member of this instance field to the
0847                  * identifier of the field name appending to the identifier resolved from its 
0848                  * qualifying member with a dot in between.
0849                  */
0850                 public final JsFunction.Member<?> insertData  = new JsFunction.Member<java.lang.Object>(this, Members.insertData );
0851                 /**
0852                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0853                  * name of this field, qualified by the current member instance of the field, and 
0854                  * to access the property of the name on an object.</p>
0855                  * @since 1.0
0856                  * @see JsCharacterData#replaceData(Number, Number, String)
0857                  * @javascript Re-compilers must resolve the member of this instance field to the
0858                  * identifier of the field name appending to the identifier resolved from its 
0859                  * qualifying member with a dot in between.
0860                  */
0861                 public final JsFunction.Member<?> replaceData = new JsFunction.Member<java.lang.Object>(this, Members.replaceData);
0862                 /**
0863                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0864                  * name of this field, qualified by the current member instance of the field, and 
0865                  * to access the property of the name on an object.</p>
0866                  * @since 1.0
0867                  * @see JsCharacterData#substringData(Number, Number)
0868                  * @javascript Re-compilers must resolve the member of this instance field to the
0869                  * identifier of the field name appending to the identifier resolved from its 
0870                  * qualifying member with a dot in between.
0871                  */
0872                 public final JsFunction.Member<java.lang.String> substringData = new JsFunction.Member<java.lang.String>(this, Members.substringData);
0873             }
0874 
0875             /**
0876              * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
0877              * with the wrapping constructor.</p>
0878              * @param var The argument of an <b>opaque</b> object.
0879              * @since 1.0
0880              * @javascript Re-compilers must ignore the construction operation of this constructor,
0881              * that is, replacing it with its only argument.
0882              */
0883             public Prototype(JsObject var) {
0884                 super(var(var, (JsFunction<?>)null));
0885             }
0886 
0887             /**
0888              * <p>An <b>opaque</b> static field defining a member that is named by the field name
0889              * without a qualifying member and to access the property of the name on an object.</p>
0890              * @since 1.0
0891              * @see JsCharacterData#valueOf()
0892              * @javascript Re-compilers must resolve the member of this static field to the
0893              * identifier of the field name.
0894              */
0895             public static final JsFunction.Member<JsCharacterData> valueOf = new JsFunction.Member<JsCharacterData>(Members.valueOf);
0896             /**
0897              * <p>An <b>opaque</b> static field defining a member that is named by the field name
0898              * without a qualifying member and to access the property of the name on an object.</p>
0899              * @since 1.0
0900              * @see JsCharacterData#appendData(String)
0901              * @javascript Re-compilers must resolve the member of this static field to the
0902              * identifier of the field name.
0903              */
0904             public static final JsFunction.Member<?> appendData  = new JsFunction.Member<java.lang.Object>(Members.appendData );
0905             /**
0906              * <p>An <b>opaque</b> static field defining a member that is named by the field name
0907              * without a qualifying member and to access the property of the name on an object.</p>
0908              * @since 1.0
0909              * @see JsCharacterData#deleteData(Number, Number)
0910              * @javascript Re-compilers must resolve the member of this static field to the
0911              * identifier of the field name.
0912              */
0913             public static final JsFunction.Member<?> deleteData  = new JsFunction.Member<java.lang.Object>(Members.deleteData );
0914             /**
0915              * <p>An <b>opaque</b> static field defining a member that is named by the field name
0916              * without a qualifying member and to access the property of the name on an object.</p>
0917              * @since 1.0
0918              * @see JsCharacterData#insertData(Number, String)
0919              * @javascript Re-compilers must resolve the member of this static field to the
0920              * identifier of the field name.
0921              */
0922             public static final JsFunction.Member<?> insertData  = new JsFunction.Member<java.lang.Object>(Members.insertData );
0923             /**
0924              * <p>An <b>opaque</b> static field defining a member that is named by the field name
0925              * without a qualifying member and to access the property of the name on an object.</p>
0926              * @since 1.0
0927              * @see JsCharacterData#replaceData(Number, Number, String)
0928              * @javascript Re-compilers must resolve the member of this static field to the
0929              * identifier of the field name.
0930              */
0931             public static final JsFunction.Member<?> replaceData = new JsFunction.Member<java.lang.Object>(Members.replaceData);
0932             /**
0933              * <p>An <b>opaque</b> static field defining a member that is named by the field name
0934              * without a qualifying member and to access the property of the name on an object.</p>
0935              * @since 1.0
0936              * @see JsCharacterData#substringData(Number, Number)
0937              * @javascript Re-compilers must resolve the member of this static field to the
0938              * identifier of the field name.
0939              */
0940             public static final JsFunction.Member<java.lang.String> substringData = new JsFunction.Member<java.lang.String>(Members.substringData);
0941         }
0942     }
0943 
0944     /**
0945      * <p>An <b>opaque</b> class representing the global <tt>Comment</tt> class of JavaScript.</p>
0946      *
0947      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0948      * 
0949      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
0950      * generated into the target codes. Re-compilers must exit with error on the operations of
0951      * accessing that kind of class objects.
0952      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
0953      * and <tt>instanceof</tt> to it always <tt>true</tt>.
0954      */
0955     public class Comment extends JsClass
0956     {
0957         /**
0958          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
0959          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
0960          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
0961          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
0962          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
0963          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
0964          * either circumstance, the field names must be exactly same as the member names, as 
0965          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
0966          * based on the field names.</p>
0967          *
0968          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0969          * 
0970          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
0971          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
0972          * of class objects.
0973          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
0974          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
0975          * <pre>q.m</pre>
0976          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
0977          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
0978          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
0979          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
0980          * <pre>m</pre>
0981          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
0982          * error on the access to <b>opaque</b> fields declared by this class under any other 
0983          * circumstances.
0984          */
0985         public static class Member extends JsClass.Member
0986         {
0987             public Member(JsObject.Member q, Mid mid) {
0988                 super(q, mid);
0989             }
0990             public Member(Mid mid) {
0991                 super(mid);
0992             }
0993             @Override
0994             /**
0995              * <p>Evaluates the property, represented by the current member instance, of the
0996              * argument object.</p>
0997              * @param o The argument object
0998              * @return The value of the current member based on the object argument.
0999              * @since 1.0
1000              * @javascript Re-compilers must convert the instance invocation of this method into
1001              * the JavaScript expression: 
1002              * <pre>o.m</pre>
1003              * where <tt>m</tt> is the identifier name resolved from the current member
1004              * instance of the invocation.
1005              */
1006             public Comment with(ObjectLike o) {
1007                 return new Comment(super.with(o));
1008             }
1009             @Override
1010             /**
1011              * <p>Evaluates a property, represented by the current member instance, of the
1012              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
1013              * @return The value of the current member based on the JavaScript global object.
1014              * @since 1.0
1015              * @javascript Re-compilers must convert the instance invocation of this method into
1016              * the JavaScript expression: 
1017              * <pre>m</pre>
1018              * where <tt>m</tt> is the identifier name resolved from the current member
1019              * instance of the invocation.
1020              */
1021             public Comment with() {
1022                 return with(Js.win());
1023             }
1024 
1025             /**
1026              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1027              * name of this field, qualified by the current member instance of the field, and 
1028              * to access the property of the name on an object.</p>
1029              * @since 1.0
1030              * @javascript Re-compilers must resolve the member of this instance field to the
1031              * identifier of the field name appending to the identifier resolved from its 
1032              * qualifying member with a dot in between.
1033              */
1034             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
1035         }
1036 
1037         /**
1038          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
1039          * with the wrapping constructor.</p>
1040          * @param var The argument of an <b>opaque</b> object.
1041          * @since 1.0
1042          * @javascript Re-compilers must ignore the construction operation of this constructor,
1043          * that is, replacing it with its only argument.
1044          */
1045         public Comment(JsObject var) {
1046             super(var(var, (JsFunction<?>)null));
1047         }
1048 
1049         /**
1050          * <p>An <b>opaque</b> static field defining a member that is named by the field name
1051          * without a qualifying member and to access the property of the name on an object.</p>
1052          * @since 1.0
1053          * @javascript Re-compilers must resolve the member of this static field to the
1054          * identifier of the field name.
1055          */
1056         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
1057 
1058         /**
1059          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
1060          * class of JavaScript.</p>
1061          *
1062          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
1063          * 
1064          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
1065          * generated into the target codes. Re-compilers must exit with error on the operations of
1066          * accessing that kind of class objects.
1067          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
1068          * and <tt>instanceof</tt> to it always <tt>true</tt>.
1069          */
1070         public static class Prototype extends JsCharacterData
1071         {
1072             /**
1073              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
1074              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
1075              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
1076              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
1077              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
1078              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
1079              * either circumstance, the field names must be exactly same as the member names, as 
1080              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
1081              * based on the field names.</p>
1082              *
1083              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
1084              * 
1085              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
1086              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
1087              * of class objects.
1088              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
1089              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
1090              * <pre>q.m</pre>
1091              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
1092              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
1093              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
1094              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
1095              * <pre>m</pre>
1096              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
1097              * error on the access to <b>opaque</b> fields declared by this class under any other 
1098              * circumstances.
1099              */
1100             public static class Member extends JsCharacterData.Member
1101             {
1102                 /**
1103                  * <p>Internally constructs a member based on a qualifying member.</p>
1104                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
1105                  * or <b>internal</b> classes or class members.</p>
1106                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
1107                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
1108                  * declared in the declaring class of this constructor itself or its subclasses. 
1109                  * Under this circumstance, the field names must be exactly same as the member 
1110                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
1111                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
1112                  * to their names appending to the name resolved from the specified qualifying 
1113                  * member with a dot in between.</p>
1114                  * @param q A qualifying member
1115                  * @param mid The ID of the member to construct
1116                  * @since 1.0
1117                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
1118                  */
1119                 public Member(JsObject.Member q, Mid mid) {
1120                     super(q, mid);
1121                 }
1122                 /**
1123                  * <p>Internally constructs a member without a qualifying member.</p>
1124                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
1125                  * or <b>internal</b> classes or class members.</p>
1126                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
1127                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
1128                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
1129                  * itself and its subclasses. Under this circumstance, the field names must be
1130                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
1131                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
1132                  * @param mid The ID of the member to construct
1133                  * @since 1.0
1134                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
1135                  */
1136                 public Member(Mid mid) {
1137                     super(mid);
1138                 }
1139                 @Override
1140                 /**
1141                  * <p>Evaluates the property, represented by the current member instance, of the
1142                  * argument object.</p>
1143                  * @param o The argument object
1144                  * @return The value of the current member based on the object argument.
1145                  * @since 1.0
1146                  * @javascript Re-compilers must convert the instance invocation of this method into
1147                  * the JavaScript expression: 
1148                  * <pre>o.m</pre>
1149                  * where <tt>m</tt> is the identifier name resolved from the current member
1150                  * instance of the invocation.
1151                  */
1152                 public Prototype with(ObjectLike o) {
1153                     return new Prototype(super.with(o));
1154                 }
1155 
1156                 /**
1157                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1158                  * name of this field, qualified by the current member instance of the field, and 
1159                  * to access the property of the name on an object.</p>
1160                  * @since 1.0
1161                  * @see JsComment#valueOf()
1162                  * @javascript Re-compilers must resolve the member of this instance field to the
1163                  * identifier of the field name appending to the identifier resolved from its 
1164                  * qualifying member with a dot in between.
1165                  */
1166                 public final JsFunction.Member<JsComment> valueOf = new JsFunction.Member<JsComment>(this, Members.valueOf);
1167             }
1168 
1169             /**
1170              * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
1171              * with the wrapping constructor.</p>
1172              * @param var The argument of an <b>opaque</b> object.
1173              * @since 1.0
1174              * @javascript Re-compilers must ignore the construction operation of this constructor,
1175              * that is, replacing it with its only argument.
1176              */
1177             public Prototype(JsObject var) {
1178                 super(var(var, (JsFunction<?>)null));
1179             }
1180 
1181             /**
1182              * <p>An <b>opaque</b> static field defining a member that is named by the field name
1183              * without a qualifying member and to access the property of the name on an object.</p>
1184              * @since 1.0
1185              * @see JsComment#valueOf()
1186              * @javascript Re-compilers must resolve the member of this static field to the
1187              * identifier of the field name.
1188              */
1189             public static final JsFunction.Member<JsComment> valueOf = new JsFunction.Member<JsComment>(Members.valueOf);
1190         }
1191     }
1192 
1193     /**
1194      * <p>An <b>opaque</b> class representing the global <tt>Document</tt> class of JavaScript.</p>
1195      *
1196      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
1197      * 
1198      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
1199      * generated into the target codes. Re-compilers must exit with error on the operations of
1200      * accessing that kind of class objects.
1201      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
1202      * and <tt>instanceof</tt> to it always <tt>true</tt>.
1203      */
1204     public class Document extends JsClass
1205     {
1206         /**
1207          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
1208          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
1209          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
1210          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
1211          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
1212          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
1213          * either circumstance, the field names must be exactly same as the member names, as 
1214          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
1215          * based on the field names.</p>
1216          *
1217          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
1218          * 
1219          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
1220          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
1221          * of class objects.
1222          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
1223          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
1224          * <pre>q.m</pre>
1225          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
1226          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
1227          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
1228          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
1229          * <pre>m</pre>
1230          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
1231          * error on the access to <b>opaque</b> fields declared by this class under any other 
1232          * circumstances.
1233          */
1234         public static class Member extends JsClass.Member
1235         {
1236             public Member(JsObject.Member q, Mid mid) {
1237                 super(q, mid);
1238             }
1239             public Member(Mid mid) {
1240                 super(mid);
1241             }
1242             @Override
1243             /**
1244              * <p>Evaluates the property, represented by the current member instance, of the
1245              * argument object.</p>
1246              * @param o The argument object
1247              * @return The value of the current member based on the object argument.
1248              * @since 1.0
1249              * @javascript Re-compilers must convert the instance invocation of this method into
1250              * the JavaScript expression: 
1251              * <pre>o.m</pre>
1252              * where <tt>m</tt> is the identifier name resolved from the current member
1253              * instance of the invocation.
1254              */
1255             public Document with(ObjectLike o) {
1256                 return new Document(super.with(o));
1257             }
1258             @Override
1259             /**
1260              * <p>Evaluates a property, represented by the current member instance, of the
1261              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
1262              * @return The value of the current member based on the JavaScript global object.
1263              * @since 1.0
1264              * @javascript Re-compilers must convert the instance invocation of this method into
1265              * the JavaScript expression: 
1266              * <pre>m</pre>
1267              * where <tt>m</tt> is the identifier name resolved from the current member
1268              * instance of the invocation.
1269              */
1270             public Document with() {
1271                 return with(Js.win());
1272             }
1273 
1274             /**
1275              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1276              * name of this field, qualified by the current member instance of the field, and 
1277              * to access the property of the name on an object.</p>
1278              * @since 1.0
1279              * @javascript Re-compilers must resolve the member of this instance field to the
1280              * identifier of the field name appending to the identifier resolved from its 
1281              * qualifying member with a dot in between.
1282              */
1283             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
1284         }
1285 
1286         /**
1287          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
1288          * with the wrapping constructor.</p>
1289          * @param var The argument of an <b>opaque</b> object.
1290          * @since 1.0
1291          * @javascript Re-compilers must ignore the construction operation of this constructor,
1292          * that is, replacing it with its only argument.
1293          */
1294         public Document(JsObject var) {
1295             super(var(var, (JsFunction<?>)null));
1296         }
1297 
1298         /**
1299          * <p>An <b>opaque</b> static field defining a member that is named by the field name
1300          * without a qualifying member and to access the property of the name on an object.</p>
1301          * @since 1.0
1302          * @javascript Re-compilers must resolve the member of this static field to the
1303          * identifier of the field name.
1304          */
1305         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
1306 
1307         /**
1308          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
1309          * class of JavaScript.</p>
1310          *
1311          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
1312          * 
1313          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
1314          * generated into the target codes. Re-compilers must exit with error on the operations of
1315          * accessing that kind of class objects.
1316          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
1317          * and <tt>instanceof</tt> to it always <tt>true</tt>.
1318          */
1319         public static class Prototype extends JsNode
1320         {
1321             /**
1322              * <p>An <b>internal</b> class containing membership data for its enclosing
1323              * opaque class.</p>
1324              * <p>This class is only used inside of <b>opaque</b> or <b>internal</b> classes or
1325              * class members.</p>
1326              *
1327              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
1328              * 
1329              * @javascript Re-compilers must report error on resolving an <b>internal</b> class.
1330              */
1331             protected static abstract class Members extends JsNode.Members
1332             {
1333                 /**
1334                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1335                  * used internally to define a member of the same name.</p>
1336                  * @since 1.0
1337                  * @see DOM2Core.Document.Prototype#addEventListener
1338                  * @see DOM2Core.Document.Prototype.Member#addEventListener
1339                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1340                  */
1341                 public final static Mid addEventListener            = id("addEventListener"           );
1342                 /**
1343                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1344                  * used internally to define a member of the same name.</p>
1345                  * @since 1.0
1346                  * @see DOM2Core.Document.Prototype#attachEvent
1347                  * @see DOM2Core.Document.Prototype.Member#attachEvent
1348                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1349                  */
1350                 public final static Mid attachEvent                 = id("attachEvent"                );
1351                 /**
1352                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1353                  * used internally to define a member of the same name.</p>
1354                  * @since 1.0
1355                  * @see DOM2Core.Document.Prototype#createAttribute
1356                  * @see DOM2Core.Document.Prototype.Member#createAttribute
1357                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1358                  */
1359                 public final static Mid createAttribute             = id("createAttribute"            );
1360                 /**
1361                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1362                  * used internally to define a member of the same name.</p>
1363                  * @since 1.0
1364                  * @see DOM2Core.Document.Prototype#createAttributeNS
1365                  * @see DOM2Core.Document.Prototype.Member#createAttributeNS
1366                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1367                  */
1368                 public final static Mid createAttributeNS           = id("createAttributeNS"          );
1369                 /**
1370                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1371                  * used internally to define a member of the same name.</p>
1372                  * @since 1.0
1373                  * @see DOM2Core.Document.Prototype#createCDATASection
1374                  * @see DOM2Core.Document.Prototype.Member#createCDATASection
1375                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1376                  */
1377                 public final static Mid createCDATASection          = id("createCDATASection"         );
1378                 /**
1379                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1380                  * used internally to define a member of the same name.</p>
1381                  * @since 1.0
1382                  * @see DOM2Core.Document.Prototype#createComment
1383                  * @see DOM2Core.Document.Prototype.Member#createComment
1384                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1385                  */
1386                 public final static Mid createComment               = id("createComment"              );
1387                 /**
1388                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1389                  * used internally to define a member of the same name.</p>
1390                  * @since 1.0
1391                  * @see DOM2Core.Document.Prototype#createDocumentFragment
1392                  * @see DOM2Core.Document.Prototype.Member#createDocumentFragment
1393                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1394                  */
1395                 public final static Mid createDocumentFragment      = id("createDocumentFragment"     );
1396                 /**
1397                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1398                  * used internally to define a member of the same name.</p>
1399                  * @since 1.0
1400                  * @see DOM2Core.Document.Prototype#createElement
1401                  * @see DOM2Core.Document.Prototype.Member#createElement
1402                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1403                  */
1404                 public final static Mid createElement               = id("createElement"              );
1405                 /**
1406                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1407                  * used internally to define a member of the same name.</p>
1408                  * @since 1.0
1409                  * @see DOM2Core.Document.Prototype#createElementNS
1410                  * @see DOM2Core.Document.Prototype.Member#createElementNS
1411                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1412                  */
1413                 public final static Mid createElementNS             = id("createElementNS"            );
1414                 /**
1415                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1416                  * used internally to define a member of the same name.</p>
1417                  * @since 1.0
1418                  * @see DOM2Core.Document.Prototype#createEvent
1419                  * @see DOM2Core.Document.Prototype.Member#createEvent
1420                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1421                  */
1422                 public final static Mid createEvent                 = id("createEvent"                );
1423                 /**
1424                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1425                  * used internally to define a member of the same name.</p>
1426                  * @since 1.0
1427                  * @see DOM2Core.Document.Prototype#createExpression
1428                  * @see DOM2Core.Document.Prototype.Member#createExpression
1429                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1430                  */
1431                 public final static Mid createExpression            = id("createExpression"           );
1432                 /**
1433                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1434                  * used internally to define a member of the same name.</p>
1435                  * @since 1.0
1436                  * @see DOM2Core.Document.Prototype#createProcessingInstruction
1437                  * @see DOM2Core.Document.Prototype.Member#createProcessingInstruction
1438                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1439                  */
1440                 public final static Mid createProcessingInstruction = id("createProcessingInstruction");
1441                 /**
1442                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1443                  * used internally to define a member of the same name.</p>
1444                  * @since 1.0
1445                  * @see DOM2Core.Document.Prototype#createRange
1446                  * @see DOM2Core.Document.Prototype.Member#createRange
1447                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1448                  */
1449                 public final static Mid createRange                 = id("createRange"                );
1450                 /**
1451                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1452                  * used internally to define a member of the same name.</p>
1453                  * @since 1.0
1454                  * @see DOM2Core.Document.Prototype#createStyleSheet
1455                  * @see DOM2Core.Document.Prototype.Member#createStyleSheet
1456                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1457                  */
1458                 public final static Mid createStyleSheet            = id("createStyleSheet"           );
1459                 /**
1460                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1461                  * used internally to define a member of the same name.</p>
1462                  * @since 1.0
1463                  * @see DOM2Core.Document.Prototype#createTextNode
1464                  * @see DOM2Core.Document.Prototype.Member#createTextNode
1465                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1466                  */
1467                 public final static Mid createTextNode              = id("createTextNode"             );
1468                 /**
1469                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1470                  * used internally to define a member of the same name.</p>
1471                  * @since 1.0
1472                  * @see DOM2Core.Document.Prototype#detachEvent
1473                  * @see DOM2Core.Document.Prototype.Member#detachEvent
1474                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1475                  */
1476                 public final static Mid detachEvent                 = id("detachEvent"                );
1477                 /**
1478                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1479                  * used internally to define a member of the same name.</p>
1480                  * @since 1.0
1481                  * @see DOM2Core.Document.Prototype#dispatchEvent
1482                  * @see DOM2Core.Document.Prototype.Member#dispatchEvent
1483                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1484                  */
1485                 public final static Mid dispatchEvent               = id("dispatchEvent"              );
1486                 /**
1487                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1488                  * used internally to define a member of the same name.</p>
1489                  * @since 1.0
1490                  * @see DOM2Core.Document.Prototype#evaluate
1491                  * @see DOM2Core.Document.Prototype.Member#evaluate
1492                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1493                  */
1494                 public final static Mid evaluate                    = id("evaluate"                   );
1495                 /**
1496                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1497                  * used internally to define a member of the same name.</p>
1498                  * @since 1.0
1499                  * @see DOM2Core.Document.Prototype#execCommand
1500                  * @see DOM2Core.Document.Prototype.Member#execCommand
1501                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1502                  */
1503                 public final static Mid execCommand                 = id("execCommand"                );
1504                 /**
1505                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1506                  * used internally to define a member of the same name.</p>
1507                  * @since 1.0
1508                  * @see DOM2Core.Document.Prototype#fireEvent
1509                  * @see DOM2Core.Document.Prototype.Member#fireEvent
1510                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1511                  */
1512                 public final static Mid fireEvent                   = id("fireEvent"                  );
1513                 /**
1514                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1515                  * used internally to define a member of the same name.</p>
1516                  * @since 1.0
1517                  * @see DOM2Core.Document.Prototype#getElementById
1518                  * @see DOM2Core.Document.Prototype.Member#getElementById
1519                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1520                  */
1521                 public final static Mid getElementById              = id("getElementById"             );
1522                 /**
1523                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1524                  * used internally to define a member of the same name.</p>
1525                  * @since 1.0
1526                  * @see DOM2Core.Document.Prototype#getElementsByTagName
1527                  * @see DOM2Core.Document.Prototype.Member#getElementsByTagName
1528                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1529                  */
1530                 public final static Mid getElementsByTagName        = id("getElementsByTagName"       );
1531                 /**
1532                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1533                  * used internally to define a member of the same name.</p>
1534                  * @since 1.0
1535                  * @see DOM2Core.Document.Prototype#getElementsByTagNameNS
1536                  * @see DOM2Core.Document.Prototype.Member#getElementsByTagNameNS
1537                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1538                  */
1539                 public final static Mid getElementsByTagNameNS      = id("getElementsByTagNameNS"     );
1540                 /**
1541                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1542                  * used internally to define a member of the same name.</p>
1543                  * @since 1.0
1544                  * @see DOM2Core.Document.Prototype#importNode
1545                  * @see DOM2Core.Document.Prototype.Member#importNode
1546                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1547                  */
1548                 public final static Mid importNode                  = id("importNode"                 );
1549                 /**
1550                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1551                  * used internally to define a member of the same name.</p>
1552                  * @since 1.0
1553                  * @see DOM2Core.Document.Prototype#loadXML
1554                  * @see DOM2Core.Document.Prototype.Member#loadXML
1555                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1556                  */
1557                 public final static Mid loadXML                     = id("loadXML"                    );
1558                 /**
1559                  * <p>An <b>internal</b> static field defining a member ID of the field name and
1560                  * used internally to define a member of the same name.</p>
1561                  * @since 1.0
1562                  * @see DOM2Core.Document.Prototype#removeEventListener
1563                  * @see DOM2Core.Document.Prototype.Member#removeEventListener
1564                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
1565                  */
1566                 public final static Mid removeEventListener         = id("removeEventListener"        );
1567             }
1568             /**
1569              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
1570              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
1571              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
1572              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
1573              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
1574              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
1575              * either circumstance, the field names must be exactly same as the member names, as 
1576              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
1577              * based on the field names.</p>
1578              *
1579              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
1580              * 
1581              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
1582              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
1583              * of class objects.
1584              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
1585              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
1586              * <pre>q.m</pre>
1587              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
1588              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
1589              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
1590              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
1591              * <pre>m</pre>
1592              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
1593              * error on the access to <b>opaque</b> fields declared by this class under any other 
1594              * circumstances.
1595              */
1596             public static class Member extends JsNode.Member
1597             {
1598                 /**
1599                  * <p>Internally constructs a member based on a qualifying member.</p>
1600                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
1601                  * or <b>internal</b> classes or class members.</p>
1602                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
1603                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
1604                  * declared in the declaring class of this constructor itself or its subclasses. 
1605                  * Under this circumstance, the field names must be exactly same as the member 
1606                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
1607                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
1608                  * to their names appending to the name resolved from the specified qualifying 
1609                  * member with a dot in between.</p>
1610                  * @param q A qualifying member
1611                  * @param mid The ID of the member to construct
1612                  * @since 1.0
1613                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
1614                  */
1615                 public Member(JsObject.Member q, Mid mid) {
1616                     super(q, mid);
1617                 }
1618                 /**
1619                  * <p>Internally constructs a member without a qualifying member.</p>
1620                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
1621                  * or <b>internal</b> classes or class members.</p>
1622                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
1623                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
1624                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
1625                  * itself and its subclasses. Under this circumstance, the field names must be
1626                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
1627                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
1628                  * @param mid The ID of the member to construct
1629                  * @since 1.0
1630                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
1631                  */
1632                 public Member(Mid mid) {
1633                     super(mid);
1634                 }
1635                 @Override
1636                 /**
1637                  * <p>Evaluates the property, represented by the current member instance, of the
1638                  * argument object.</p>
1639                  * @param o The argument object
1640                  * @return The value of the current member based on the object argument.
1641                  * @since 1.0
1642                  * @javascript Re-compilers must convert the instance invocation of this method into
1643                  * the JavaScript expression: 
1644                  * <pre>o.m</pre>
1645                  * where <tt>m</tt> is the identifier name resolved from the current member
1646                  * instance of the invocation.
1647                  */
1648                 public Prototype with(ObjectLike o) {
1649                     return new Prototype(super.with(o));
1650                 }
1651 
1652                 /**
1653                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1654                  * name of this field, qualified by the current member instance of the field, and 
1655                  * to access the property of the name on an object.</p>
1656                  * @since 1.0
1657                  * @see JsDocument#valueOf()
1658                  * @javascript Re-compilers must resolve the member of this instance field to the
1659                  * identifier of the field name appending to the identifier resolved from its 
1660                  * qualifying member with a dot in between.
1661                  */
1662                 public final JsFunction.Member<JsDocument> valueOf = new JsFunction.Member<JsDocument>(this, Members.valueOf);
1663                 /**
1664                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1665                  * name of this field, qualified by the current member instance of the field, and 
1666                  * to access the property of the name on an object.</p>
1667                  * @since 1.0
1668                  * @see JsDocument#addEventListener(String, JsFunction, Boolean)
1669                  * @javascript Re-compilers must resolve the member of this instance field to the
1670                  * identifier of the field name appending to the identifier resolved from its 
1671                  * qualifying member with a dot in between.
1672                  */
1673                 public final JsFunction.Member<?> addEventListener    = new JsFunction.Member<java.lang.Object>(this, Members.addEventListener   );
1674                 /**
1675                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1676                  * name of this field, qualified by the current member instance of the field, and 
1677                  * to access the property of the name on an object.</p>
1678                  * @since 1.0
1679                  * @see JsDocument#attachEvent(String, JsFunction)
1680                  * @javascript Re-compilers must resolve the member of this instance field to the
1681                  * identifier of the field name appending to the identifier resolved from its 
1682                  * qualifying member with a dot in between.
1683                  */
1684                 public final JsFunction.Member<?> attachEvent         = new JsFunction.Member<java.lang.Object>(this, Members.attachEvent        );
1685                 /**
1686                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1687                  * name of this field, qualified by the current member instance of the field, and 
1688                  * to access the property of the name on an object.</p>
1689                  * @since 1.0
1690                  * @see JsDocument#detachEvent(String, JsFunction)
1691                  * @javascript Re-compilers must resolve the member of this instance field to the
1692                  * identifier of the field name appending to the identifier resolved from its 
1693                  * qualifying member with a dot in between.
1694                  */
1695                 public final JsFunction.Member<?> detachEvent         = new JsFunction.Member<java.lang.Object>(this, Members.detachEvent        );
1696                 /**
1697                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1698                  * name of this field, qualified by the current member instance of the field, and 
1699                  * to access the property of the name on an object.</p>
1700                  * @since 1.0
1701                  * @see JsDocument#loadXML(String)
1702                  * @javascript Re-compilers must resolve the member of this instance field to the
1703                  * identifier of the field name appending to the identifier resolved from its 
1704                  * qualifying member with a dot in between.
1705                  */
1706                 public final JsFunction.Member<?> loadXML             = new JsFunction.Member<java.lang.Object>(this, Members.loadXML            );
1707                 /**
1708                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1709                  * name of this field, qualified by the current member instance of the field, and 
1710                  * to access the property of the name on an object.</p>
1711                  * @since 1.0
1712                  * @see JsDocument#removeEventListener(String, JsFunction, Boolean)
1713                  * @javascript Re-compilers must resolve the member of this instance field to the
1714                  * identifier of the field name appending to the identifier resolved from its 
1715                  * qualifying member with a dot in between.
1716                  */
1717                 public final JsFunction.Member<?> removeEventListener = new JsFunction.Member<java.lang.Object>(this, Members.removeEventListener);
1718                 /**
1719                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1720                  * name of this field, qualified by the current member instance of the field, and 
1721                  * to access the property of the name on an object.</p>
1722                  * @since 1.0
1723                  * @see JsDocument#execCommand(String, Boolean, Object)
1724                  * @javascript Re-compilers must resolve the member of this instance field to the
1725                  * identifier of the field name appending to the identifier resolved from its 
1726                  * qualifying member with a dot in between.
1727                  */
1728                 public final JsFunction.Member<java.lang.Boolean> execCommand   = new JsFunction.Member<java.lang.Boolean>(this, Members.execCommand  );
1729                 /**
1730                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1731                  * name of this field, qualified by the current member instance of the field, and 
1732                  * to access the property of the name on an object.</p>
1733                  * @since 1.0
1734                  * @see JsDocument#dispatchEvent(JsEvent)
1735                  * @javascript Re-compilers must resolve the member of this instance field to the
1736                  * identifier of the field name appending to the identifier resolved from its 
1737                  * qualifying member with a dot in between.
1738                  */
1739                 public final JsFunction.Member<java.lang.Boolean> dispatchEvent = new JsFunction.Member<java.lang.Boolean>(this, Members.dispatchEvent);
1740                 /**
1741                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1742                  * name of this field, qualified by the current member instance of the field, and 
1743                  * to access the property of the name on an object.</p>
1744                  * @since 1.0
1745                  * @see JsDocument#createAttribute(String)
1746                  * @javascript Re-compilers must resolve the member of this instance field to the
1747                  * identifier of the field name appending to the identifier resolved from its 
1748                  * qualifying member with a dot in between.
1749                  */
1750                 public final JsFunction.Member<JsAttr> createAttribute   = new JsFunction.Member<JsAttr>(this, Members.createAttribute  );
1751                 /**
1752                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1753                  * name of this field, qualified by the current member instance of the field, and 
1754                  * to access the property of the name on an object.</p>
1755                  * @since 1.0
1756                  * @see JsDocument#createAttributeNS(String, String)
1757                  * @javascript Re-compilers must resolve the member of this instance field to the
1758                  * identifier of the field name appending to the identifier resolved from its 
1759                  * qualifying member with a dot in between.
1760                  */
1761                 public final JsFunction.Member<JsAttr> createAttributeNS = new JsFunction.Member<JsAttr>(this, Members.createAttributeNS);
1762                 /**
1763                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1764                  * name of this field, qualified by the current member instance of the field, and 
1765                  * to access the property of the name on an object.</p>
1766                  * @since 1.0
1767                  * @see JsDocument#createCDATASection(String)
1768                  * @javascript Re-compilers must resolve the member of this instance field to the
1769                  * identifier of the field name appending to the identifier resolved from its 
1770                  * qualifying member with a dot in between.
1771                  */
1772                 public final JsFunction.Member<JsCDATASection> createCDATASection = new JsFunction.Member<JsCDATASection>(this, Members.createCDATASection);
1773                 /**
1774                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1775                  * name of this field, qualified by the current member instance of the field, and 
1776                  * to access the property of the name on an object.</p>
1777                  * @since 1.0
1778                  * @see JsDocument#createComment(String)
1779                  * @javascript Re-compilers must resolve the member of this instance field to the
1780                  * identifier of the field name appending to the identifier resolved from its 
1781                  * qualifying member with a dot in between.
1782                  */
1783                 public final JsFunction.Member<JsComment> createComment = new JsFunction.Member<JsComment>(this, Members.createComment);
1784                 /**
1785                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1786                  * name of this field, qualified by the current member instance of the field, and 
1787                  * to access the property of the name on an object.</p>
1788                  * @since 1.0
1789                  * @see JsDocument#createDocumentFragment()
1790                  * @javascript Re-compilers must resolve the member of this instance field to the
1791                  * identifier of the field name appending to the identifier resolved from its 
1792                  * qualifying member with a dot in between.
1793                  */
1794                 public final JsFunction.Member<JsDocumentFragment> createDocumentFragment = new JsFunction.Member<JsDocumentFragment>(this, Members.createDocumentFragment);
1795                 /**
1796                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1797                  * name of this field, qualified by the current member instance of the field, and 
1798                  * to access the property of the name on an object.</p>
1799                  * @since 1.0
1800                  * @see JsDocument#createElement(String)
1801                  * @javascript Re-compilers must resolve the member of this instance field to the
1802                  * identifier of the field name appending to the identifier resolved from its 
1803                  * qualifying member with a dot in between.
1804                  */
1805                 public final JsFunction.Member<JsElement> createElement   = new JsFunction.Member<JsElement>(this, Members.createElement  );
1806                 /**
1807                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1808                  * name of this field, qualified by the current member instance of the field, and 
1809                  * to access the property of the name on an object.</p>
1810                  * @since 1.0
1811                  * @see JsDocument#createElementNS(String, String)
1812                  * @javascript Re-compilers must resolve the member of this instance field to the
1813                  * identifier of the field name appending to the identifier resolved from its 
1814                  * qualifying member with a dot in between.
1815                  */
1816                 public final JsFunction.Member<JsElement> createElementNS = new JsFunction.Member<JsElement>(this, Members.createElementNS);
1817                 /**
1818                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1819                  * name of this field, qualified by the current member instance of the field, and 
1820                  * to access the property of the name on an object.</p>
1821                  * @since 1.0
1822                  * @see JsDocument#createEvent(String)
1823                  * @javascript Re-compilers must resolve the member of this instance field to the
1824                  * identifier of the field name appending to the identifier resolved from its 
1825                  * qualifying member with a dot in between.
1826                  */
1827                 public final JsFunction.Member<JsEvent> createEvent = new JsFunction.Member<JsEvent>(this, Members.createEvent);
1828                 /**
1829                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1830                  * name of this field, qualified by the current member instance of the field, and 
1831                  * to access the property of the name on an object.</p>
1832                  * @since 1.0
1833                  * @see JsDocument#createExpression(String, JsFunction)
1834                  * @javascript Re-compilers must resolve the member of this instance field to the
1835                  * identifier of the field name appending to the identifier resolved from its 
1836                  * qualifying member with a dot in between.
1837                  */
1838                 public final JsFunction.Member<JsXPathExpression> createExpression = new JsFunction.Member<JsXPathExpression>(this, Members.createExpression);
1839                 /**
1840                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1841                  * name of this field, qualified by the current member instance of the field, and 
1842                  * to access the property of the name on an object.</p>
1843                  * @since 1.0
1844                  * @see JsDocument#createProcessingInstruction(String, String)
1845                  * @javascript Re-compilers must resolve the member of this instance field to the
1846                  * identifier of the field name appending to the identifier resolved from its 
1847                  * qualifying member with a dot in between.
1848                  */
1849                 public final JsFunction.Member<JsProcessingInstruction> createProcessingInstruction = new JsFunction.Member<JsProcessingInstruction>(this, Members.createProcessingInstruction);
1850                 /**
1851                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1852                  * name of this field, qualified by the current member instance of the field, and 
1853                  * to access the property of the name on an object.</p>
1854                  * @since 1.0
1855                  * @see JsDocument#createRange()
1856                  * @javascript Re-compilers must resolve the member of this instance field to the
1857                  * identifier of the field name appending to the identifier resolved from its 
1858                  * qualifying member with a dot in between.
1859                  */
1860                 public final JsFunction.Member<JsRange> createRange = new JsFunction.Member<JsRange>(this, Members.createRange);
1861                 /**
1862                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1863                  * name of this field, qualified by the current member instance of the field, and 
1864                  * to access the property of the name on an object.</p>
1865                  * @since 1.0
1866                  * @see JsDocument#createStyleSheet(String)
1867                  * @see JsDocument#createStyleSheet(String, int)
1868                  * @javascript Re-compilers must resolve the member of this instance field to the
1869                  * identifier of the field name appending to the identifier resolved from its 
1870                  * qualifying member with a dot in between.
1871                  */
1872                 public final JsFunction.Member<JsCSSStyleSheet> createStyleSheet = new JsFunction.Member<JsCSSStyleSheet>(this, Members.createStyleSheet, Generic.get(JsCSSStyleSheet.class));
1873                 /**
1874                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1875                  * name of this field, qualified by the current member instance of the field, and 
1876                  * to access the property of the name on an object.</p>
1877                  * @since 1.0
1878                  * @see JsDocument#createTextNode(String)
1879                  * @javascript Re-compilers must resolve the member of this instance field to the
1880                  * identifier of the field name appending to the identifier resolved from its 
1881                  * qualifying member with a dot in between.
1882                  */
1883                 public final JsFunction.Member<JsText> createTextNode = new JsFunction.Member<JsText>(this, Members.createTextNode);
1884                 /**
1885                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1886                  * name of this field, qualified by the current member instance of the field, and 
1887                  * to access the property of the name on an object.</p>
1888                  * @since 1.0
1889                  * @see JsDocument#evaluate(String, JsNode, JsFunction, Number, JsXPathResult)
1890                  * @javascript Re-compilers must resolve the member of this instance field to the
1891                  * identifier of the field name appending to the identifier resolved from its 
1892                  * qualifying member with a dot in between.
1893                  */
1894                 public final JsFunction.Member<JsXPathResult> evaluate = new JsFunction.Member<JsXPathResult>(this, Members.evaluate);
1895                 /**
1896                  * <p>An <b>opaque</b> static field defining a member that is named by the field name
1897                  * without a qualifying member and to access the property of the name on an object.</p>
1898                  * @since 1.0
1899                  * @see JsElement#fireEvent(JsEvent)
1900                  * @javascript Re-compilers must resolve the member of this static field to the
1901                  * identifier of the field name.
1902                  */
1903                 public static final JsFunction.Member<java.lang.Boolean> fireEvent              = new JsFunction.Member<java.lang.Boolean>(Members.fireEvent             );
1904                 /**
1905                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1906                  * name of this field, qualified by the current member instance of the field, and 
1907                  * to access the property of the name on an object.</p>
1908                  * @since 1.0
1909                  * @see JsDocument#getElementById(String)
1910                  * @javascript Re-compilers must resolve the member of this instance field to the
1911                  * identifier of the field name appending to the identifier resolved from its 
1912                  * qualifying member with a dot in between.
1913                  */
1914                 public final JsFunction.Member<JsElement> getElementById = new JsFunction.Member<JsElement>(this, Members.getElementById);
1915                 /**
1916                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1917                  * name of this field, qualified by the current member instance of the field, and 
1918                  * to access the property of the name on an object.</p>
1919                  * @since 1.0
1920                  * @see JsDocument#getElementsByTagName(String)
1921                  * @javascript Re-compilers must resolve the member of this instance field to the
1922                  * identifier of the field name appending to the identifier resolved from its 
1923                  * qualifying member with a dot in between.
1924                  */
1925                 public final JsFunction.Member<JsNodeList<? extends JsElement>> getElementsByTagName   = new JsFunction.Member<JsNodeList<? extends JsElement>>(this, Members.getElementsByTagName  );
1926                 /**
1927                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1928                  * name of this field, qualified by the current member instance of the field, and 
1929                  * to access the property of the name on an object.</p>
1930                  * @since 1.0
1931                  * @see JsDocument#getElementsByTagNameNS(String, String)
1932                  * @javascript Re-compilers must resolve the member of this instance field to the
1933                  * identifier of the field name appending to the identifier resolved from its 
1934                  * qualifying member with a dot in between.
1935                  */
1936                 public final JsFunction.Member<JsNodeList<? extends JsElement>> getElementsByTagNameNS = new JsFunction.Member<JsNodeList<? extends JsElement>>(this, Members.getElementsByTagNameNS);
1937                 /**
1938                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
1939                  * name of this field, qualified by the current member instance of the field, and 
1940                  * to access the property of the name on an object.</p>
1941                  * @since 1.0
1942                  * @see JsDocument#importNode(JsNode, Boolean)
1943                  * @javascript Re-compilers must resolve the member of this instance field to the
1944                  * identifier of the field name appending to the identifier resolved from its 
1945                  * qualifying member with a dot in between.
1946                  */
1947                 public final JsFunction.Member<JsNode> importNode = new JsFunction.Member<JsNode>(this, Members.importNode);
1948             }
1949 
1950             /**
1951              * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
1952              * with the wrapping constructor.</p>
1953              * @param var The argument of an <b>opaque</b> object.
1954              * @since 1.0
1955              * @javascript Re-compilers must ignore the construction operation of this constructor,
1956              * that is, replacing it with its only argument.
1957              */
1958             public Prototype(JsObject var) {
1959                 super(var(var, (JsFunction<?>)null));
1960             }
1961 
1962             /**
1963              * <p>An <b>opaque</b> static field defining a member that is named by the field name
1964              * without a qualifying member and to access the property of the name on an object.</p>
1965              * @since 1.0
1966              * @see JsDocument#valueOf()
1967              * @javascript Re-compilers must resolve the member of this static field to the
1968              * identifier of the field name.
1969              */
1970             public static final JsFunction.Member<JsDocument> valueOf = new JsFunction.Member<JsDocument>(Members.valueOf);
1971             /**
1972              * <p>An <b>opaque</b> static field defining a member that is named by the field name
1973              * without a qualifying member and to access the property of the name on an object.</p>
1974              * @since 1.0
1975              * @see JsDocument#addEventListener(String, JsFunction, Boolean)
1976              * @javascript Re-compilers must resolve the member of this static field to the
1977              * identifier of the field name.
1978              */
1979             public static final JsFunction.Member<?> addEventListener    = new JsFunction.Member<java.lang.Object>(Members.addEventListener   );
1980             /**
1981              * <p>An <b>opaque</b> static field defining a member that is named by the field name
1982              * without a qualifying member and to access the property of the name on an object.</p>
1983              * @since 1.0
1984              * @see JsDocument#attachEvent(String, JsFunction)
1985              * @javascript Re-compilers must resolve the member of this static field to the
1986              * identifier of the field name.
1987              */
1988             public static final JsFunction.Member<?> attachEvent         = new JsFunction.Member<java.lang.Object>(Members.attachEvent        );
1989             /**
1990              * <p>An <b>opaque</b> static field defining a member that is named by the field name
1991              * without a qualifying member and to access the property of the name on an object.</p>
1992              * @since 1.0
1993              * @see JsDocument#detachEvent(String, JsFunction)
1994              * @javascript Re-compilers must resolve the member of this static field to the
1995              * identifier of the field name.
1996              */
1997             public static final JsFunction.Member<?> detachEvent         = new JsFunction.Member<java.lang.Object>(Members.detachEvent        );
1998             /**
1999              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2000              * without a qualifying member and to access the property of the name on an object.</p>
2001              * @since 1.0
2002              * @see JsDocument#loadXML(String)
2003              * @javascript Re-compilers must resolve the member of this static field to the
2004              * identifier of the field name.
2005              */
2006             public static final JsFunction.Member<?> loadXML             = new JsFunction.Member<java.lang.Object>(Members.loadXML            );
2007             /**
2008              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2009              * without a qualifying member and to access the property of the name on an object.</p>
2010              * @since 1.0
2011              * @see JsDocument#removeEventListener(String, JsFunction, Boolean)
2012              * @javascript Re-compilers must resolve the member of this static field to the
2013              * identifier of the field name.
2014              */
2015             public static final JsFunction.Member<?> removeEventListener = new JsFunction.Member<java.lang.Object>(Members.removeEventListener);
2016             /**
2017              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2018              * without a qualifying member and to access the property of the name on an object.</p>
2019              * @since 1.0
2020              * @see JsDocument#execCommand(String, Boolean, Object)
2021              * @javascript Re-compilers must resolve the member of this static field to the
2022              * identifier of the field name.
2023              */
2024             public static final JsFunction.Member<java.lang.Boolean> execCommand   = new JsFunction.Member<java.lang.Boolean>(Members.execCommand  );
2025             /**
2026              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2027              * without a qualifying member and to access the property of the name on an object.</p>
2028              * @since 1.0
2029              * @see JsDocument#dispatchEvent(JsEvent)
2030              * @javascript Re-compilers must resolve the member of this static field to the
2031              * identifier of the field name.
2032              */
2033             public static final JsFunction.Member<java.lang.Boolean> dispatchEvent = new JsFunction.Member<java.lang.Boolean>(Members.dispatchEvent);
2034             /**
2035              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2036              * without a qualifying member and to access the property of the name on an object.</p>
2037              * @since 1.0
2038              * @see JsDocument#createAttribute(String)
2039              * @javascript Re-compilers must resolve the member of this static field to the
2040              * identifier of the field name.
2041              */
2042             public static final JsFunction.Member<JsAttr> createAttribute   = new JsFunction.Member<JsAttr>(Members.createAttribute  );
2043             /**
2044              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2045              * without a qualifying member and to access the property of the name on an object.</p>
2046              * @since 1.0
2047              * @see JsDocument#createAttributeNS(String, String)
2048              * @javascript Re-compilers must resolve the member of this static field to the
2049              * identifier of the field name.
2050              */
2051             public static final JsFunction.Member<JsAttr> createAttributeNS = new JsFunction.Member<JsAttr>(Members.createAttributeNS);
2052             /**
2053              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2054              * without a qualifying member and to access the property of the name on an object.</p>
2055              * @since 1.0
2056              * @see JsDocument#createCDATASection(String)
2057              * @javascript Re-compilers must resolve the member of this static field to the
2058              * identifier of the field name.
2059              */
2060             public static final JsFunction.Member<JsCDATASection> createCDATASection = new JsFunction.Member<JsCDATASection>(Members.createCDATASection);
2061             /**
2062              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2063              * without a qualifying member and to access the property of the name on an object.</p>
2064              * @since 1.0
2065              * @see JsDocument#createComment(String)
2066              * @javascript Re-compilers must resolve the member of this static field to the
2067              * identifier of the field name.
2068              */
2069             public static final JsFunction.Member<JsComment> createComment = new JsFunction.Member<JsComment>(Members.createComment);
2070             /**
2071              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2072              * without a qualifying member and to access the property of the name on an object.</p>
2073              * @since 1.0
2074              * @see JsDocument#createDocumentFragment()
2075              * @javascript Re-compilers must resolve the member of this static field to the
2076              * identifier of the field name.
2077              */
2078             public static final JsFunction.Member<JsDocumentFragment> createDocumentFragment = new JsFunction.Member<JsDocumentFragment>(Members.createDocumentFragment);
2079             /**
2080              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2081              * without a qualifying member and to access the property of the name on an object.</p>
2082              * @since 1.0
2083              * @see JsDocument#createElement(String)
2084              * @javascript Re-compilers must resolve the member of this static field to the
2085              * identifier of the field name.
2086              */
2087             public static final JsFunction.Member<JsElement> createElement   = new JsFunction.Member<JsElement>(Members.createElement  );
2088             /**
2089              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2090              * without a qualifying member and to access the property of the name on an object.</p>
2091              * @since 1.0
2092              * @see JsDocument#createElementNS(String, String)
2093              * @javascript Re-compilers must resolve the member of this static field to the
2094              * identifier of the field name.
2095              */
2096             public static final JsFunction.Member<JsElement> createElementNS = new JsFunction.Member<JsElement>(Members.createElementNS);
2097             /**
2098              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2099              * without a qualifying member and to access the property of the name on an object.</p>
2100              * @since 1.0
2101              * @see JsDocument#createEvent(String)
2102              * @javascript Re-compilers must resolve the member of this static field to the
2103              * identifier of the field name.
2104              */
2105             public static final JsFunction.Member<JsEvent> createEvent = new JsFunction.Member<JsEvent>(Members.createEvent);
2106             /**
2107              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2108              * without a qualifying member and to access the property of the name on an object.</p>
2109              * @since 1.0
2110              * @see JsDocument#createExpression(String)
2111              * @see JsDocument#createExpression(String, JsFunction)
2112              * @javascript Re-compilers must resolve the member of this static field to the
2113              * identifier of the field name.
2114              */
2115             public static final JsFunction.Member<JsXPathExpression> createExpression = new JsFunction.Member<JsXPathExpression>(Members.createExpression);
2116             /**
2117              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2118              * without a qualifying member and to access the property of the name on an object.</p>
2119              * @since 1.0
2120              * @see JsDocument#createProcessingInstruction(String, String)
2121              * @javascript Re-compilers must resolve the member of this static field to the
2122              * identifier of the field name.
2123              */
2124             public static final JsFunction.Member<JsProcessingInstruction> createProcessingInstruction = new JsFunction.Member<JsProcessingInstruction>(Members.createProcessingInstruction);
2125             /**
2126              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2127              * without a qualifying member and to access the property of the name on an object.</p>
2128              * @since 1.0
2129              * @see JsDocument#createRange()
2130              * @javascript Re-compilers must resolve the member of this static field to the
2131              * identifier of the field name.
2132              */
2133             public static final JsFunction.Member<JsRange> createRange = new JsFunction.Member<JsRange>(Members.createRange);
2134             /**
2135              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2136              * without a qualifying member and to access the property of the name on an object.</p>
2137              * @since 1.0
2138              * @see JsDocument#createStyleSheet(String)
2139              * @see JsDocument#createStyleSheet(String, int)
2140              * @javascript Re-compilers must resolve the member of this static field to the
2141              * identifier of the field name.
2142              */
2143             public static final JsFunction.Member<JsCSSStyleSheet> createStyleSheet = new JsFunction.Member<JsCSSStyleSheet>(Members.createStyleSheet, Generic.get(JsCSSStyleSheet.class));
2144             /**
2145              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2146              * without a qualifying member and to access the property of the name on an object.</p>
2147              * @since 1.0
2148              * @see JsDocument#createTextNode(String)
2149              * @javascript Re-compilers must resolve the member of this static field to the
2150              * identifier of the field name.
2151              */
2152             public static final JsFunction.Member<JsText> createTextNode = new JsFunction.Member<JsText>(Members.createTextNode);
2153             /**
2154              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2155              * without a qualifying member and to access the property of the name on an object.</p>
2156              * @since 1.0
2157              * @see JsDocument#evaluate(String, JsNode, JsFunction, Number, JsXPathResult)
2158              * @javascript Re-compilers must resolve the member of this static field to the
2159              * identifier of the field name.
2160              */
2161             public static final JsFunction.Member<JsXPathResult> evaluate = new JsFunction.Member<JsXPathResult>(Members.evaluate);
2162             /**
2163              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2164              * without a qualifying member and to access the property of the name on an object.</p>
2165              * @since 1.0
2166              * @see JsElement#fireEvent(JsEvent)
2167              * @javascript Re-compilers must resolve the member of this static field to the
2168              * identifier of the field name.
2169              */
2170             public static final JsFunction.Member<java.lang.Boolean> fireEvent              = new JsFunction.Member<java.lang.Boolean>(Members.fireEvent             );
2171             /**
2172              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2173              * without a qualifying member and to access the property of the name on an object.</p>
2174              * @since 1.0
2175              * @see JsDocument#getElementById(String)
2176              * @javascript Re-compilers must resolve the member of this static field to the
2177              * identifier of the field name.
2178              */
2179             public static final JsFunction.Member<JsElement> getElementById = new JsFunction.Member<JsElement>(Members.getElementById);
2180             /**
2181              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2182              * without a qualifying member and to access the property of the name on an object.</p>
2183              * @since 1.0
2184              * @see JsDocument#getElementsByTagName(String)
2185              * @javascript Re-compilers must resolve the member of this static field to the
2186              * identifier of the field name.
2187              */
2188             public static final JsFunction.Member<JsNodeList<? extends JsElement>> getElementsByTagName   = new JsFunction.Member<JsNodeList<? extends JsElement>>(Members.getElementsByTagName  );
2189             /**
2190              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2191              * without a qualifying member and to access the property of the name on an object.</p>
2192              * @since 1.0
2193              * @see JsDocument#getElementsByTagNameNS(String, String)
2194              * @javascript Re-compilers must resolve the member of this static field to the
2195              * identifier of the field name.
2196              */
2197             public static final JsFunction.Member<JsNodeList<? extends JsElement>> getElementsByTagNameNS = new JsFunction.Member<JsNodeList<? extends JsElement>>(Members.getElementsByTagNameNS);
2198             /**
2199              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2200              * without a qualifying member and to access the property of the name on an object.</p>
2201              * @since 1.0
2202              * @see JsDocument#importNode(JsNode, Boolean)
2203              * @javascript Re-compilers must resolve the member of this static field to the
2204              * identifier of the field name.
2205              */
2206             public static final JsFunction.Member<JsNode> importNode = new JsFunction.Member<JsNode>(Members.importNode);
2207         }
2208     }
2209 
2210     /**
2211      * <p>An <b>opaque</b> class representing the global <tt>DocumentFragment</tt> class of JavaScript.</p>
2212      *
2213      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2214      * 
2215      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
2216      * generated into the target codes. Re-compilers must exit with error on the operations of
2217      * accessing that kind of class objects.
2218      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
2219      * and <tt>instanceof</tt> to it always <tt>true</tt>.
2220      */
2221     public class DocumentFragment extends JsClass
2222     {
2223         /**
2224          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
2225          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
2226          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
2227          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
2228          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
2229          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
2230          * either circumstance, the field names must be exactly same as the member names, as 
2231          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
2232          * based on the field names.</p>
2233          *
2234          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2235          * 
2236          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
2237          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
2238          * of class objects.
2239          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
2240          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
2241          * <pre>q.m</pre>
2242          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
2243          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
2244          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
2245          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
2246          * <pre>m</pre>
2247          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
2248          * error on the access to <b>opaque</b> fields declared by this class under any other 
2249          * circumstances.
2250          */
2251         public static class Member extends JsClass.Member
2252         {
2253             public Member(JsObject.Member q, Mid mid) {
2254                 super(q, mid);
2255             }
2256             public Member(Mid mid) {
2257                 super(mid);
2258             }
2259             @Override
2260             /**
2261              * <p>Evaluates the property, represented by the current member instance, of the
2262              * argument object.</p>
2263              * @param o The argument object
2264              * @return The value of the current member based on the object argument.
2265              * @since 1.0
2266              * @javascript Re-compilers must convert the instance invocation of this method into
2267              * the JavaScript expression: 
2268              * <pre>o.m</pre>
2269              * where <tt>m</tt> is the identifier name resolved from the current member
2270              * instance of the invocation.
2271              */
2272             public DocumentFragment with(ObjectLike o) {
2273                 return new DocumentFragment(super.with(o));
2274             }
2275             @Override
2276             /**
2277              * <p>Evaluates a property, represented by the current member instance, of the
2278              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
2279              * @return The value of the current member based on the JavaScript global object.
2280              * @since 1.0
2281              * @javascript Re-compilers must convert the instance invocation of this method into
2282              * the JavaScript expression: 
2283              * <pre>m</pre>
2284              * where <tt>m</tt> is the identifier name resolved from the current member
2285              * instance of the invocation.
2286              */
2287             public DocumentFragment with() {
2288                 return with(Js.win());
2289             }
2290 
2291             /**
2292              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
2293              * name of this field, qualified by the current member instance of the field, and 
2294              * to access the property of the name on an object.</p>
2295              * @since 1.0
2296              * @javascript Re-compilers must resolve the member of this instance field to the
2297              * identifier of the field name appending to the identifier resolved from its 
2298              * qualifying member with a dot in between.
2299              */
2300             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
2301         }
2302 
2303         /**
2304          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
2305          * with the wrapping constructor.</p>
2306          * @param var The argument of an <b>opaque</b> object.
2307          * @since 1.0
2308          * @javascript Re-compilers must ignore the construction operation of this constructor,
2309          * that is, replacing it with its only argument.
2310          */
2311         public DocumentFragment(JsObject var) {
2312             super(var(var, (JsFunction<?>)null));
2313         }
2314 
2315         /**
2316          * <p>An <b>opaque</b> static field defining a member that is named by the field name
2317          * without a qualifying member and to access the property of the name on an object.</p>
2318          * @since 1.0
2319          * @javascript Re-compilers must resolve the member of this static field to the
2320          * identifier of the field name.
2321          */
2322         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
2323 
2324         /**
2325          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
2326          * class of JavaScript.</p>
2327          *
2328          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2329          * 
2330          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
2331          * generated into the target codes. Re-compilers must exit with error on the operations of
2332          * accessing that kind of class objects.
2333          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
2334          * and <tt>instanceof</tt> to it always <tt>true</tt>.
2335          */
2336         public static class Prototype extends JsNode
2337         {
2338             /**
2339              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
2340              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
2341              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
2342              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
2343              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
2344              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
2345              * either circumstance, the field names must be exactly same as the member names, as 
2346              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
2347              * based on the field names.</p>
2348              *
2349              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2350              * 
2351              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
2352              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
2353              * of class objects.
2354              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
2355              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
2356              * <pre>q.m</pre>
2357              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
2358              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
2359              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
2360              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
2361              * <pre>m</pre>
2362              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
2363              * error on the access to <b>opaque</b> fields declared by this class under any other 
2364              * circumstances.
2365              */
2366             public static class Member extends JsNode.Member
2367             {
2368                 /**
2369                  * <p>Internally constructs a member based on a qualifying member.</p>
2370                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
2371                  * or <b>internal</b> classes or class members.</p>
2372                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
2373                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
2374                  * declared in the declaring class of this constructor itself or its subclasses. 
2375                  * Under this circumstance, the field names must be exactly same as the member 
2376                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
2377                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
2378                  * to their names appending to the name resolved from the specified qualifying 
2379                  * member with a dot in between.</p>
2380                  * @param q A qualifying member
2381                  * @param mid The ID of the member to construct
2382                  * @since 1.0
2383                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
2384                  */
2385                 public Member(JsObject.Member q, Mid mid) {
2386                     super(q, mid);
2387                 }
2388                 /**
2389                  * <p>Internally constructs a member without a qualifying member.</p>
2390                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
2391                  * or <b>internal</b> classes or class members.</p>
2392                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
2393                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
2394                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
2395                  * itself and its subclasses. Under this circumstance, the field names must be
2396                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
2397                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
2398                  * @param mid The ID of the member to construct
2399                  * @since 1.0
2400                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
2401                  */
2402                 public Member(Mid mid) {
2403                     super(mid);
2404                 }
2405                 @Override
2406                 /**
2407                  * <p>Evaluates the property, represented by the current member instance, of the
2408                  * argument object.</p>
2409                  * @param o The argument object
2410                  * @return The value of the current member based on the object argument.
2411                  * @since 1.0
2412                  * @javascript Re-compilers must convert the instance invocation of this method into
2413                  * the JavaScript expression: 
2414                  * <pre>o.m</pre>
2415                  * where <tt>m</tt> is the identifier name resolved from the current member
2416                  * instance of the invocation.
2417                  */
2418                 public Prototype with(ObjectLike o) {
2419                     return new Prototype(super.with(o));
2420                 }
2421 
2422                 /**
2423                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
2424                  * name of this field, qualified by the current member instance of the field, and 
2425                  * to access the property of the name on an object.</p>
2426                  * @since 1.0
2427                  * @see JsDocumentFragment#valueOf()
2428                  * @javascript Re-compilers must resolve the member of this instance field to the
2429                  * identifier of the field name appending to the identifier resolved from its 
2430                  * qualifying member with a dot in between.
2431                  */
2432                 public final JsFunction.Member<JsDocumentFragment> valueOf = new JsFunction.Member<JsDocumentFragment>(this, Members.valueOf);
2433             }
2434 
2435             /**
2436              * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
2437              * with the wrapping constructor.</p>
2438              * @param var The argument of an <b>opaque</b> object.
2439              * @since 1.0
2440              * @javascript Re-compilers must ignore the construction operation of this constructor,
2441              * that is, replacing it with its only argument.
2442              */
2443             public Prototype(JsObject var) {
2444                 super(var(var, (JsFunction<?>)null));
2445             }
2446 
2447             /**
2448              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2449              * without a qualifying member and to access the property of the name on an object.</p>
2450              * @since 1.0
2451              * @see JsDocumentFragment#valueOf()
2452              * @javascript Re-compilers must resolve the member of this static field to the
2453              * identifier of the field name.
2454              */
2455             public static final JsFunction.Member<JsDocumentFragment> valueOf = new JsFunction.Member<JsDocumentFragment>(Members.valueOf);
2456         }
2457     }
2458 
2459     /**
2460      * <p>An <b>opaque</b> class representing the global <tt>DocumentType</tt> class of JavaScript.</p>
2461      *
2462      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2463      * 
2464      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
2465      * generated into the target codes. Re-compilers must exit with error on the operations of
2466      * accessing that kind of class objects.
2467      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
2468      * and <tt>instanceof</tt> to it always <tt>true</tt>.
2469      */
2470     public class DocumentType extends JsClass
2471     {
2472         /**
2473          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
2474          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
2475          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
2476          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
2477          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
2478          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
2479          * either circumstance, the field names must be exactly same as the member names, as 
2480          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
2481          * based on the field names.</p>
2482          *
2483          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2484          * 
2485          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
2486          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
2487          * of class objects.
2488          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
2489          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
2490          * <pre>q.m</pre>
2491          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
2492          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
2493          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
2494          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
2495          * <pre>m</pre>
2496          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
2497          * error on the access to <b>opaque</b> fields declared by this class under any other 
2498          * circumstances.
2499          */
2500         public static class Member extends JsClass.Member
2501         {
2502             public Member(JsObject.Member q, Mid mid) {
2503                 super(q, mid);
2504             }
2505             public Member(Mid mid) {
2506                 super(mid);
2507             }
2508             @Override
2509             /**
2510              * <p>Evaluates the property, represented by the current member instance, of the
2511              * argument object.</p>
2512              * @param o The argument object
2513              * @return The value of the current member based on the object argument.
2514              * @since 1.0
2515              * @javascript Re-compilers must convert the instance invocation of this method into
2516              * the JavaScript expression: 
2517              * <pre>o.m</pre>
2518              * where <tt>m</tt> is the identifier name resolved from the current member
2519              * instance of the invocation.
2520              */
2521             public DocumentType with(ObjectLike o) {
2522                 return new DocumentType(super.with(o));
2523             }
2524             @Override
2525             /**
2526              * <p>Evaluates a property, represented by the current member instance, of the
2527              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
2528              * @return The value of the current member based on the JavaScript global object.
2529              * @since 1.0
2530              * @javascript Re-compilers must convert the instance invocation of this method into
2531              * the JavaScript expression: 
2532              * <pre>m</pre>
2533              * where <tt>m</tt> is the identifier name resolved from the current member
2534              * instance of the invocation.
2535              */
2536             public DocumentType with() {
2537                 return with(Js.win());
2538             }
2539 
2540             /**
2541              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
2542              * name of this field, qualified by the current member instance of the field, and 
2543              * to access the property of the name on an object.</p>
2544              * @since 1.0
2545              * @javascript Re-compilers must resolve the member of this instance field to the
2546              * identifier of the field name appending to the identifier resolved from its 
2547              * qualifying member with a dot in between.
2548              */
2549             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
2550         }
2551 
2552         /**
2553          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
2554          * with the wrapping constructor.</p>
2555          * @param var The argument of an <b>opaque</b> object.
2556          * @since 1.0
2557          * @javascript Re-compilers must ignore the construction operation of this constructor,
2558          * that is, replacing it with its only argument.
2559          */
2560         public DocumentType(JsObject var) {
2561             super(var(var, (JsFunction<?>)null));
2562         }
2563 
2564         /**
2565          * <p>An <b>opaque</b> static field defining a member that is named by the field name
2566          * without a qualifying member and to access the property of the name on an object.</p>
2567          * @since 1.0
2568          * @javascript Re-compilers must resolve the member of this static field to the
2569          * identifier of the field name.
2570          */
2571         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
2572 
2573         /**
2574          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
2575          * class of JavaScript.</p>
2576          *
2577          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2578          * 
2579          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
2580          * generated into the target codes. Re-compilers must exit with error on the operations of
2581          * accessing that kind of class objects.
2582          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
2583          * and <tt>instanceof</tt> to it always <tt>true</tt>.
2584          */
2585         public static class Prototype extends JsObject
2586         {
2587             /**
2588              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
2589              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
2590              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
2591              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
2592              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
2593              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
2594              * either circumstance, the field names must be exactly same as the member names, as 
2595              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
2596              * based on the field names.</p>
2597              *
2598              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2599              * 
2600              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
2601              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
2602              * of class objects.
2603              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
2604              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
2605              * <pre>q.m</pre>
2606              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
2607              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
2608              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
2609              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
2610              * <pre>m</pre>
2611              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
2612              * error on the access to <b>opaque</b> fields declared by this class under any other 
2613              * circumstances.
2614              */
2615             public static class Member extends JsObject.Member
2616             {
2617                 /**
2618                  * <p>Internally constructs a member based on a qualifying member.</p>
2619                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
2620                  * or <b>internal</b> classes or class members.</p>
2621                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
2622                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
2623                  * declared in the declaring class of this constructor itself or its subclasses. 
2624                  * Under this circumstance, the field names must be exactly same as the member 
2625                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
2626                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
2627                  * to their names appending to the name resolved from the specified qualifying 
2628                  * member with a dot in between.</p>
2629                  * @param q A qualifying member
2630                  * @param mid The ID of the member to construct
2631                  * @since 1.0
2632                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
2633                  */
2634                 public Member(JsObject.Member q, Mid mid) {
2635                     super(q, mid);
2636                 }
2637                 /**
2638                  * <p>Internally constructs a member without a qualifying member.</p>
2639                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
2640                  * or <b>internal</b> classes or class members.</p>
2641                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
2642                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
2643                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
2644                  * itself and its subclasses. Under this circumstance, the field names must be
2645                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
2646                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
2647                  * @param mid The ID of the member to construct
2648                  * @since 1.0
2649                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
2650                  */
2651                 public Member(Mid mid) {
2652                     super(mid);
2653                 }
2654                 @Override
2655                 /**
2656                  * <p>Evaluates the property, represented by the current member instance, of the
2657                  * argument object.</p>
2658                  * @param o The argument object
2659                  * @return The value of the current member based on the object argument.
2660                  * @since 1.0
2661                  * @javascript Re-compilers must convert the instance invocation of this method into
2662                  * the JavaScript expression: 
2663                  * <pre>o.m</pre>
2664                  * where <tt>m</tt> is the identifier name resolved from the current member
2665                  * instance of the invocation.
2666                  */
2667                 public Prototype with(ObjectLike o) {
2668                     return new Prototype(super.with(o));
2669                 }
2670 
2671                 /**
2672                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
2673                  * name of this field, qualified by the current member instance of the field, and 
2674                  * to access the property of the name on an object.</p>
2675                  * @since 1.0
2676                  * @see JsDocumentType#valueOf()
2677                  * @javascript Re-compilers must resolve the member of this instance field to the
2678                  * identifier of the field name appending to the identifier resolved from its 
2679                  * qualifying member with a dot in between.
2680                  */
2681                 public final JsFunction.Member<JsDocumentType> valueOf = new JsFunction.Member<JsDocumentType>(this, Members.valueOf);
2682             }
2683 
2684             /**
2685              * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
2686              * with the wrapping constructor.</p>
2687              * @param var The argument of an <b>opaque</b> object.
2688              * @since 1.0
2689              * @javascript Re-compilers must ignore the construction operation of this constructor,
2690              * that is, replacing it with its only argument.
2691              */
2692             public Prototype(JsObject var) {
2693                 super(var(var, (JsFunction<?>)null));
2694             }
2695 
2696             /**
2697              * <p>An <b>opaque</b> static field defining a member that is named by the field name
2698              * without a qualifying member and to access the property of the name on an object.</p>
2699              * @since 1.0
2700              * @see JsDocumentType#valueOf()
2701              * @javascript Re-compilers must resolve the member of this static field to the
2702              * identifier of the field name.
2703              */
2704             public static final JsFunction.Member<JsDocumentType> valueOf = new JsFunction.Member<JsDocumentType>(Members.valueOf);
2705         }
2706     }
2707 
2708     /**
2709      * <p>An <b>opaque</b> class representing the global <tt>DOMException</tt> class of JavaScript.</p>
2710      *
2711      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2712      * 
2713      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
2714      * generated into the target codes. Re-compilers must exit with error on the operations of
2715      * accessing that kind of class objects.
2716      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
2717      * and <tt>instanceof</tt> to it always <tt>true</tt>.
2718      */
2719     public class DOMException extends JsClass
2720     {
2721         /**
2722          * <p>An <b>internal</b> class containing membership data for its enclosing 
2723          * opaque class.</p>
2724          * <p>This class is only used inside of <b>opaque</b> or <b>internal</b> classes or 
2725          * class members.</p>
2726          *
2727          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2728          * 
2729          * @javascript Re-compilers must report error on resolving an <b>internal</b> class. 
2730          */
2731         protected static abstract class Members extends JsClass.Members
2732         {
2733             /**
2734              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2735              * used internally to define a member of the same name.</p>
2736              * @since 1.0
2737              * @see DOM2Core.DOMException#INDEX_SIZE_ERR
2738              * @see DOM2Core.DOMException.Member#INDEX_SIZE_ERR
2739              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2740              */
2741             public final static Mid INDEX_SIZE_ERR = id("INDEX_SIZE_ERR");
2742             /**
2743              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2744              * used internally to define a member of the same name.</p>
2745              * @since 1.0
2746              * @see DOM2Core.DOMException#DOMSTRING_SIZE_ERR
2747              * @see DOM2Core.DOMException.Member#DOMSTRING_SIZE_ERR
2748              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2749              */
2750             public final static Mid DOMSTRING_SIZE_ERR = id("DOMSTRING_SIZE_ERR");
2751             /**
2752              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2753              * used internally to define a member of the same name.</p>
2754              * @since 1.0
2755              * @see DOM2Core.DOMException#HIERARCHY_REQUEST_ERR
2756              * @see DOM2Core.DOMException.Member#HIERARCHY_REQUEST_ERR
2757              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2758              */
2759             public final static Mid HIERARCHY_REQUEST_ERR = id("HIERARCHY_REQUEST_ERR");
2760             /**
2761              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2762              * used internally to define a member of the same name.</p>
2763              * @since 1.0
2764              * @see DOM2Core.DOMException#WRONG_DOCUMENT_ERR
2765              * @see DOM2Core.DOMException.Member#WRONG_DOCUMENT_ERR
2766              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2767              */
2768             public final static Mid WRONG_DOCUMENT_ERR = id("WRONG_DOCUMENT_ERR");
2769             /**
2770              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2771              * used internally to define a member of the same name.</p>
2772              * @since 1.0
2773              * @see DOM2Core.DOMException#INVALID_CHARACTER_ERR
2774              * @see DOM2Core.DOMException.Member#INVALID_CHARACTER_ERR
2775              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2776              */
2777             public final static Mid INVALID_CHARACTER_ERR = id("INVALID_CHARACTER_ERR");
2778             /**
2779              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2780              * used internally to define a member of the same name.</p>
2781              * @since 1.0
2782              * @see DOM2Core.DOMException#NO_DATA_ALLOWED_ERR
2783              * @see DOM2Core.DOMException.Member#NO_DATA_ALLOWED_ERR
2784              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2785              */
2786             public final static Mid NO_DATA_ALLOWED_ERR = id("NO_DATA_ALLOWED_ERR");
2787             /**
2788              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2789              * used internally to define a member of the same name.</p>
2790              * @since 1.0
2791              * @see DOM2Core.DOMException#NO_MODIFICATION_ALLOWED_ERR
2792              * @see DOM2Core.DOMException.Member#NO_MODIFICATION_ALLOWED_ERR
2793              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2794              */
2795             public final static Mid NO_MODIFICATION_ALLOWED_ERR = id("NO_MODIFICATION_ALLOWED_ERR");
2796             /**
2797              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2798              * used internally to define a member of the same name.</p>
2799              * @since 1.0
2800              * @see DOM2Core.DOMException#NOT_FOUND_ERR
2801              * @see DOM2Core.DOMException.Member#NOT_FOUND_ERR
2802              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2803              */
2804             public final static Mid NOT_FOUND_ERR = id("NOT_FOUND_ERR");
2805             /**
2806              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2807              * used internally to define a member of the same name.</p>
2808              * @since 1.0
2809              * @see DOM2Core.DOMException#NOT_SUPPORTED_ERR
2810              * @see DOM2Core.DOMException.Member#NOT_SUPPORTED_ERR
2811              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2812              */
2813             public final static Mid NOT_SUPPORTED_ERR = id("NOT_SUPPORTED_ERR");
2814             /**
2815              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2816              * used internally to define a member of the same name.</p>
2817              * @since 1.0
2818              * @see DOM2Core.DOMException#INUSE_ATTRIBUTE_ERR
2819              * @see DOM2Core.DOMException.Member#INUSE_ATTRIBUTE_ERR
2820              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2821              */
2822             public final static Mid INUSE_ATTRIBUTE_ERR = id("INUSE_ATTRIBUTE_ERR");
2823             /**
2824              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2825              * used internally to define a member of the same name.</p>
2826              * @since 1.0
2827              * @see DOM2Core.DOMException#INVALID_STATE_ERR
2828              * @see DOM2Core.DOMException.Member#INVALID_STATE_ERR
2829              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2830              */
2831             public final static Mid INVALID_STATE_ERR = id("INVALID_STATE_ERR");
2832             /**
2833              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2834              * used internally to define a member of the same name.</p>
2835              * @since 1.0
2836              * @see DOM2Core.DOMException#SYNTAX_ERR
2837              * @see DOM2Core.DOMException.Member#SYNTAX_ERR
2838              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2839              */
2840             public final static Mid SYNTAX_ERR = id("SYNTAX_ERR");
2841             /**
2842              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2843              * used internally to define a member of the same name.</p>
2844              * @since 1.0
2845              * @see DOM2Core.DOMException#INVALID_MODIFICATION_ERR
2846              * @see DOM2Core.DOMException.Member#INVALID_MODIFICATION_ERR
2847              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2848              */
2849             public final static Mid INVALID_MODIFICATION_ERR = id("INVALID_MODIFICATION_ERR");
2850             /**
2851              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2852              * used internally to define a member of the same name.</p>
2853              * @since 1.0
2854              * @see DOM2Core.DOMException#NAMESPACE_ERR
2855              * @see DOM2Core.DOMException.Member#NAMESPACE_ERR
2856              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2857              */
2858             public final static Mid NAMESPACE_ERR = id("NAMESPACE_ERR");
2859             /**
2860              * <p>An <b>internal</b> static field defining a member ID of the field name and 
2861              * used internally to define a member of the same name.</p>
2862              * @since 1.0
2863              * @see DOM2Core.DOMException#INVALID_ACCESS_ERR
2864              * @see DOM2Core.DOMException.Member#INVALID_ACCESS_ERR
2865              * @javascript Re-compilers must report error on accessing an <b>internal</b> field. 
2866              */
2867             public final static Mid INVALID_ACCESS_ERR = id("INVALID_ACCESS_ERR");
2868         }
2869         /**
2870          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
2871          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
2872          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
2873          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
2874          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
2875          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
2876          * either circumstance, the field names must be exactly same as the member names, as 
2877          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
2878          * based on the field names.</p>
2879          *
2880          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
2881          * 
2882          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
2883          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
2884          * of class objects.
2885          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
2886          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
2887          * <pre>q.m</pre>
2888          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
2889          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
2890          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
2891          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
2892          * <pre>m</pre>
2893          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
2894          * error on the access to <b>opaque</b> fields declared by this class under any other 
2895          * circumstances.
2896          */
2897         public static class Member extends JsClass.Member
2898         {
2899             public Member(JsObject.Member q, Mid mid) {
2900                 super(q, mid);
2901             }
2902             public Member(Mid mid) {
2903                 super(mid);
2904             }
2905             @Override
2906             /**
2907              * <p>Evaluates the property, represented by the current member instance, of the
2908              * argument object.</p>
2909              * @param o The argument object
2910              * @return The value of the current member based on the object argument.
2911              * @since 1.0
2912              * @javascript Re-compilers must convert the instance invocation of this method into
2913              * the JavaScript expression: 
2914              * <pre>o.m</pre>
2915              * where <tt>m</tt> is the identifier name resolved from the current member
2916              * instance of the invocation.
2917              */
2918             public DOMException with(ObjectLike o) {
2919                 return new DOMException(super.with(o));
2920             }
2921             @Override
2922             /**
2923              * <p>Evaluates a property, represented by the current member instance, of the
2924              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
2925              * @return The value of the current member based on the JavaScript global object.
2926              * @since 1.0
2927              * @javascript Re-compilers must convert the instance invocation of this method into
2928              * the JavaScript expression: 
2929              * <pre>m</pre>
2930              * where <tt>m</tt> is the identifier name resolved from the current member
2931              * instance of the invocation.
2932              */
2933             public DOMException with() {
2934                 return with(Js.win());
2935             }
2936 
2937             /**
2938              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
2939              * name of this field, qualified by the current member instance of the field, and 
2940              * to access the property of the name on an object.</p>
2941              * @since 1.0
2942              * @javascript Re-compilers must resolve the member of this instance field to the
2943              * identifier of the field name appending to the identifier resolved from its 
2944              * qualifying member with a dot in between.
2945              */
2946             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
2947             /**
2948              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
2949              * name of this field, qualified by the current member instance of the field, and 
2950              * to access the property of the name on an object.</p>
2951              * @since 1.0
2952              * @see JsDOMException#INDEX_SIZE_ERR
2953              * @javascript Re-compilers must resolve the member of this instance field to the
2954              * identifier of the field name appending to the identifier resolved from its 
2955              * qualifying member with a dot in between.
2956              */
2957             public final Value.Short.Member INDEX_SIZE_ERR = new Value.Short.Member(this, Members.INDEX_SIZE_ERR);
2958             /**
2959              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
2960              * name of this field, qualified by the current member instance of the field, and 
2961              * to access the property of the name on an object.</p>
2962              * @since 1.0
2963              * @see JsDOMException#DOMSTRING_SIZE_ERR
2964              * @javascript Re-compilers must resolve the member of this instance field to the
2965              * identifier of the field name appending to the identifier resolved from its 
2966              * qualifying member with a dot in between.
2967              */
2968             public final Value.Short.Member DOMSTRING_SIZE_ERR = new Value.Short.Member(this, Members.DOMSTRING_SIZE_ERR);
2969             /**
2970              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
2971              * name of this field, qualified by the current member instance of the field, and 
2972              * to access the property of the name on an object.</p>
2973              * @since 1.0
2974              * @see JsDOMException#HIERARCHY_REQUEST_ERR
2975              * @javascript Re-compilers must resolve the member of this instance field to the
2976              * identifier of the field name appending to the identifier resolved from its 
2977              * qualifying member with a dot in between.
2978              */
2979             public final Value.Short.Member HIERARCHY_REQUEST_ERR = new Value.Short.Member(this, Members.HIERARCHY_REQUEST_ERR);
2980             /**
2981              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
2982              * name of this field, qualified by the current member instance of the field, and 
2983              * to access the property of the name on an object.</p>
2984              * @since 1.0
2985              * @see JsDOMException#WRONG_DOCUMENT_ERR
2986              * @javascript Re-compilers must resolve the member of this instance field to the
2987              * identifier of the field name appending to the identifier resolved from its 
2988              * qualifying member with a dot in between.
2989              */
2990             public final Value.Short.Member WRONG_DOCUMENT_ERR = new Value.Short.Member(this, Members.WRONG_DOCUMENT_ERR);
2991             /**
2992              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
2993              * name of this field, qualified by the current member instance of the field, and 
2994              * to access the property of the name on an object.</p>
2995              * @since 1.0
2996              * @see JsDOMException#INVALID_CHARACTER_ERR
2997              * @javascript Re-compilers must resolve the member of this instance field to the
2998              * identifier of the field name appending to the identifier resolved from its 
2999              * qualifying member with a dot in between.
3000              */
3001             public final Value.Short.Member INVALID_CHARACTER_ERR = new Value.Short.Member(this, Members.INVALID_CHARACTER_ERR);
3002             /**
3003              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3004              * name of this field, qualified by the current member instance of the field, and 
3005              * to access the property of the name on an object.</p>
3006              * @since 1.0
3007              * @see JsDOMException#NO_DATA_ALLOWED_ERR
3008              * @javascript Re-compilers must resolve the member of this instance field to the
3009              * identifier of the field name appending to the identifier resolved from its 
3010              * qualifying member with a dot in between.
3011              */
3012             public final Value.Short.Member NO_DATA_ALLOWED_ERR = new Value.Short.Member(this, Members.NO_DATA_ALLOWED_ERR);
3013             /**
3014              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3015              * name of this field, qualified by the current member instance of the field, and 
3016              * to access the property of the name on an object.</p>
3017              * @since 1.0
3018              * @see JsDOMException#NO_MODIFICATION_ALLOWED_ERR
3019              * @javascript Re-compilers must resolve the member of this instance field to the
3020              * identifier of the field name appending to the identifier resolved from its 
3021              * qualifying member with a dot in between.
3022              */
3023             public final Value.Short.Member NO_MODIFICATION_ALLOWED_ERR = new Value.Short.Member(this, Members.NO_MODIFICATION_ALLOWED_ERR);
3024             /**
3025              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3026              * name of this field, qualified by the current member instance of the field, and 
3027              * to access the property of the name on an object.</p>
3028              * @since 1.0
3029              * @see JsDOMException#NOT_FOUND_ERR
3030              * @javascript Re-compilers must resolve the member of this instance field to the
3031              * identifier of the field name appending to the identifier resolved from its 
3032              * qualifying member with a dot in between.
3033              */
3034             public final Value.Short.Member NOT_FOUND_ERR = new Value.Short.Member(this, Members.NOT_FOUND_ERR);
3035             /**
3036              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3037              * name of this field, qualified by the current member instance of the field, and 
3038              * to access the property of the name on an object.</p>
3039              * @since 1.0
3040              * @see JsDOMException#NOT_SUPPORTED_ERR
3041              * @javascript Re-compilers must resolve the member of this instance field to the
3042              * identifier of the field name appending to the identifier resolved from its 
3043              * qualifying member with a dot in between.
3044              */
3045             public final Value.Short.Member NOT_SUPPORTED_ERR = new Value.Short.Member(this, Members.NOT_SUPPORTED_ERR);
3046             /**
3047              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3048              * name of this field, qualified by the current member instance of the field, and 
3049              * to access the property of the name on an object.</p>
3050              * @since 1.0
3051              * @see JsDOMException#INUSE_ATTRIBUTE_ERR
3052              * @javascript Re-compilers must resolve the member of this instance field to the
3053              * identifier of the field name appending to the identifier resolved from its 
3054              * qualifying member with a dot in between.
3055              */
3056             public final Value.Short.Member INUSE_ATTRIBUTE_ERR = new Value.Short.Member(this, Members.INUSE_ATTRIBUTE_ERR);
3057             /**
3058              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3059              * name of this field, qualified by the current member instance of the field, and 
3060              * to access the property of the name on an object.</p>
3061              * @since 1.0
3062              * @see JsDOMException#INVALID_STATE_ERR
3063              * @javascript Re-compilers must resolve the member of this instance field to the
3064              * identifier of the field name appending to the identifier resolved from its 
3065              * qualifying member with a dot in between.
3066              */
3067             public final Value.Short.Member INVALID_STATE_ERR = new Value.Short.Member(this, Members.INVALID_STATE_ERR);
3068             /**
3069              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3070              * name of this field, qualified by the current member instance of the field, and 
3071              * to access the property of the name on an object.</p>
3072              * @since 1.0
3073              * @see JsDOMException#SYNTAX_ERR
3074              * @javascript Re-compilers must resolve the member of this instance field to the
3075              * identifier of the field name appending to the identifier resolved from its 
3076              * qualifying member with a dot in between.
3077              */
3078             public final Value.Short.Member SYNTAX_ERR = new Value.Short.Member(this, Members.SYNTAX_ERR);
3079             /**
3080              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3081              * name of this field, qualified by the current member instance of the field, and 
3082              * to access the property of the name on an object.</p>
3083              * @since 1.0
3084              * @see JsDOMException#INVALID_MODIFICATION_ERR
3085              * @javascript Re-compilers must resolve the member of this instance field to the
3086              * identifier of the field name appending to the identifier resolved from its 
3087              * qualifying member with a dot in between.
3088              */
3089             public final Value.Short.Member INVALID_MODIFICATION_ERR = new Value.Short.Member(this, Members.INVALID_MODIFICATION_ERR);
3090             /**
3091              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3092              * name of this field, qualified by the current member instance of the field, and 
3093              * to access the property of the name on an object.</p>
3094              * @since 1.0
3095              * @see JsDOMException#NAMESPACE_ERR
3096              * @javascript Re-compilers must resolve the member of this instance field to the
3097              * identifier of the field name appending to the identifier resolved from its 
3098              * qualifying member with a dot in between.
3099              */
3100             public final Value.Short.Member NAMESPACE_ERR = new Value.Short.Member(this, Members.NAMESPACE_ERR);
3101             /**
3102              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3103              * name of this field, qualified by the current member instance of the field, and 
3104              * to access the property of the name on an object.</p>
3105              * @since 1.0
3106              * @see JsDOMException#INVALID_ACCESS_ERR
3107              * @javascript Re-compilers must resolve the member of this instance field to the
3108              * identifier of the field name appending to the identifier resolved from its 
3109              * qualifying member with a dot in between.
3110              */
3111             public final Value.Short.Member INVALID_ACCESS_ERR = new Value.Short.Member(this, Members.INVALID_ACCESS_ERR);
3112         }
3113 
3114         /**
3115          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
3116          * with the wrapping constructor.</p>
3117          * @param var The argument of an <b>opaque</b> object.
3118          * @since 1.0
3119          * @javascript Re-compilers must ignore the construction operation of this constructor,
3120          * that is, replacing it with its only argument.
3121          */
3122         public DOMException(JsObject var) {
3123             super(var(var, (JsFunction<?>)null));
3124         }
3125 
3126         /**
3127          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3128          * without a qualifying member and to access the property of the name on an object.</p>
3129          * @since 1.0
3130          * @javascript Re-compilers must resolve the member of this static field to the
3131          * identifier of the field name.
3132          */
3133         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
3134         /**
3135          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3136          * without a qualifying member and to access the property of the name on an object.</p>
3137          * @since 1.0
3138          * @see JsDOMException#INDEX_SIZE_ERR
3139          * @javascript Re-compilers must resolve the member of this static field to the
3140          * identifier of the field name.
3141          */
3142         public static final Value.Short.Member INDEX_SIZE_ERR = new Value.Short.Member(Members.INDEX_SIZE_ERR);
3143         /**
3144          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3145          * without a qualifying member and to access the property of the name on an object.</p>
3146          * @since 1.0
3147          * @see JsDOMException#DOMSTRING_SIZE_ERR
3148          * @javascript Re-compilers must resolve the member of this static field to the
3149          * identifier of the field name.
3150          */
3151         public static final Value.Short.Member DOMSTRING_SIZE_ERR = new Value.Short.Member(Members.DOMSTRING_SIZE_ERR);
3152         /**
3153          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3154          * without a qualifying member and to access the property of the name on an object.</p>
3155          * @since 1.0
3156          * @see JsDOMException#HIERARCHY_REQUEST_ERR
3157          * @javascript Re-compilers must resolve the member of this static field to the
3158          * identifier of the field name.
3159          */
3160         public static final Value.Short.Member HIERARCHY_REQUEST_ERR = new Value.Short.Member(Members.HIERARCHY_REQUEST_ERR);
3161         /**
3162          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3163          * without a qualifying member and to access the property of the name on an object.</p>
3164          * @since 1.0
3165          * @see JsDOMException#WRONG_DOCUMENT_ERR
3166          * @javascript Re-compilers must resolve the member of this static field to the
3167          * identifier of the field name.
3168          */
3169         public static final Value.Short.Member WRONG_DOCUMENT_ERR = new Value.Short.Member(Members.WRONG_DOCUMENT_ERR);
3170         /**
3171          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3172          * without a qualifying member and to access the property of the name on an object.</p>
3173          * @since 1.0
3174          * @see JsDOMException#INVALID_CHARACTER_ERR
3175          * @javascript Re-compilers must resolve the member of this static field to the
3176          * identifier of the field name.
3177          */
3178         public static final Value.Short.Member INVALID_CHARACTER_ERR = new Value.Short.Member(Members.INVALID_CHARACTER_ERR);
3179         /**
3180          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3181          * without a qualifying member and to access the property of the name on an object.</p>
3182          * @since 1.0
3183          * @see JsDOMException#NO_DATA_ALLOWED_ERR
3184          * @javascript Re-compilers must resolve the member of this static field to the
3185          * identifier of the field name.
3186          */
3187         public static final Value.Short.Member NO_DATA_ALLOWED_ERR = new Value.Short.Member(Members.NO_DATA_ALLOWED_ERR);
3188         /**
3189          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3190          * without a qualifying member and to access the property of the name on an object.</p>
3191          * @since 1.0
3192          * @see JsDOMException#NO_MODIFICATION_ALLOWED_ERR
3193          * @javascript Re-compilers must resolve the member of this static field to the
3194          * identifier of the field name.
3195          */
3196         public static final Value.Short.Member NO_MODIFICATION_ALLOWED_ERR = new Value.Short.Member(Members.NO_MODIFICATION_ALLOWED_ERR);
3197         /**
3198          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3199          * without a qualifying member and to access the property of the name on an object.</p>
3200          * @since 1.0
3201          * @see JsDOMException#NOT_FOUND_ERR
3202          * @javascript Re-compilers must resolve the member of this static field to the
3203          * identifier of the field name.
3204          */
3205         public static final Value.Short.Member NOT_FOUND_ERR = new Value.Short.Member(Members.NOT_FOUND_ERR);
3206         /**
3207          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3208          * without a qualifying member and to access the property of the name on an object.</p>
3209          * @since 1.0
3210          * @see JsDOMException#NOT_SUPPORTED_ERR
3211          * @javascript Re-compilers must resolve the member of this static field to the
3212          * identifier of the field name.
3213          */
3214         public static final Value.Short.Member NOT_SUPPORTED_ERR = new Value.Short.Member(Members.NOT_SUPPORTED_ERR);
3215         /**
3216          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3217          * without a qualifying member and to access the property of the name on an object.</p>
3218          * @since 1.0
3219          * @see JsDOMException#INUSE_ATTRIBUTE_ERR
3220          * @javascript Re-compilers must resolve the member of this static field to the
3221          * identifier of the field name.
3222          */
3223         public static final Value.Short.Member INUSE_ATTRIBUTE_ERR = new Value.Short.Member(Members.INUSE_ATTRIBUTE_ERR);
3224         /**
3225          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3226          * without a qualifying member and to access the property of the name on an object.</p>
3227          * @since 1.0
3228          * @see JsDOMException#INVALID_STATE_ERR
3229          * @javascript Re-compilers must resolve the member of this static field to the
3230          * identifier of the field name.
3231          */
3232         public static final Value.Short.Member INVALID_STATE_ERR = new Value.Short.Member(Members.INVALID_STATE_ERR);
3233         /**
3234          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3235          * without a qualifying member and to access the property of the name on an object.</p>
3236          * @since 1.0
3237          * @see JsDOMException#SYNTAX_ERR
3238          * @javascript Re-compilers must resolve the member of this static field to the
3239          * identifier of the field name.
3240          */
3241         public static final Value.Short.Member SYNTAX_ERR = new Value.Short.Member(Members.SYNTAX_ERR);
3242         /**
3243          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3244          * without a qualifying member and to access the property of the name on an object.</p>
3245          * @since 1.0
3246          * @see JsDOMException#INVALID_MODIFICATION_ERR
3247          * @javascript Re-compilers must resolve the member of this static field to the
3248          * identifier of the field name.
3249          */
3250         public static final Value.Short.Member INVALID_MODIFICATION_ERR = new Value.Short.Member(Members.INVALID_MODIFICATION_ERR);
3251         /**
3252          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3253          * without a qualifying member and to access the property of the name on an object.</p>
3254          * @since 1.0
3255          * @see JsDOMException#NAMESPACE_ERR
3256          * @javascript Re-compilers must resolve the member of this static field to the
3257          * identifier of the field name.
3258          */
3259         public static final Value.Short.Member NAMESPACE_ERR = new Value.Short.Member(Members.NAMESPACE_ERR);
3260         /**
3261          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3262          * without a qualifying member and to access the property of the name on an object.</p>
3263          * @since 1.0
3264          * @see JsDOMException#INVALID_ACCESS_ERR
3265          * @javascript Re-compilers must resolve the member of this static field to the
3266          * identifier of the field name.
3267          */
3268         public static final Value.Short.Member INVALID_ACCESS_ERR = new Value.Short.Member(Members.INVALID_ACCESS_ERR);
3269 
3270         /**
3271          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
3272          * class of JavaScript.</p>
3273          *
3274          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3275          * 
3276          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
3277          * generated into the target codes. Re-compilers must exit with error on the operations of
3278          * accessing that kind of class objects.
3279          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
3280          * and <tt>instanceof</tt> to it always <tt>true</tt>.
3281          */
3282         public static class Prototype extends JsObject
3283         {
3284             /**
3285              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
3286              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
3287              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
3288              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
3289              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
3290              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
3291              * either circumstance, the field names must be exactly same as the member names, as 
3292              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
3293              * based on the field names.</p>
3294              *
3295              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3296              * 
3297              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
3298              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
3299              * of class objects.
3300              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
3301              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
3302              * <pre>q.m</pre>
3303              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
3304              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
3305              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
3306              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
3307              * <pre>m</pre>
3308              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
3309              * error on the access to <b>opaque</b> fields declared by this class under any other 
3310              * circumstances.
3311              */
3312             public static class Member extends JsObject.Member
3313             {
3314                 /**
3315                  * <p>Internally constructs a member based on a qualifying member.</p>
3316                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
3317                  * or <b>internal</b> classes or class members.</p>
3318                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
3319                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
3320                  * declared in the declaring class of this constructor itself or its subclasses. 
3321                  * Under this circumstance, the field names must be exactly same as the member 
3322                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
3323                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
3324                  * to their names appending to the name resolved from the specified qualifying 
3325                  * member with a dot in between.</p>
3326                  * @param q A qualifying member
3327                  * @param mid The ID of the member to construct
3328                  * @since 1.0
3329                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
3330                  */
3331                 public Member(JsObject.Member q, Mid mid) {
3332                     super(q, mid);
3333                 }
3334                 /**
3335                  * <p>Internally constructs a member without a qualifying member.</p>
3336                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
3337                  * or <b>internal</b> classes or class members.</p>
3338                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
3339                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
3340                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
3341                  * itself and its subclasses. Under this circumstance, the field names must be
3342                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
3343                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
3344                  * @param mid The ID of the member to construct
3345                  * @since 1.0
3346                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
3347                  */
3348                 public Member(Mid mid) {
3349                     super(mid);
3350                 }
3351                 @Override
3352                 /**
3353                  * <p>Evaluates the property, represented by the current member instance, of the
3354                  * argument object.</p>
3355                  * @param o The argument object
3356                  * @return The value of the current member based on the object argument.
3357                  * @since 1.0
3358                  * @javascript Re-compilers must convert the instance invocation of this method into
3359                  * the JavaScript expression: 
3360                  * <pre>o.m</pre>
3361                  * where <tt>m</tt> is the identifier name resolved from the current member
3362                  * instance of the invocation.
3363                  */
3364                 public Prototype with(ObjectLike o) {
3365                     return new Prototype(super.with(o));
3366                 }
3367 
3368                 /**
3369                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3370                  * name of this field, qualified by the current member instance of the field, and 
3371                  * to access the property of the name on an object.</p>
3372                  * @since 1.0
3373                  * @see JsDocumentType#valueOf()
3374                  * @javascript Re-compilers must resolve the member of this instance field to the
3375                  * identifier of the field name appending to the identifier resolved from its 
3376                  * qualifying member with a dot in between.
3377                  */
3378                 public final JsFunction.Member<JsDOMException> valueOf = new JsFunction.Member<JsDOMException>(this, Members.valueOf);
3379             }
3380 
3381             /**
3382              * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
3383              * with the wrapping constructor.</p>
3384              * @param var The argument of an <b>opaque</b> object.
3385              * @since 1.0
3386              * @javascript Re-compilers must ignore the construction operation of this constructor,
3387              * that is, replacing it with its only argument.
3388              */
3389             public Prototype(JsObject var) {
3390                 super(var(var, (JsFunction<?>)null));
3391             }
3392 
3393             /**
3394              * <p>An <b>opaque</b> static field defining a member that is named by the field name
3395              * without a qualifying member and to access the property of the name on an object.</p>
3396              * @since 1.0
3397              * @see JsDocumentType#valueOf()
3398              * @javascript Re-compilers must resolve the member of this static field to the
3399              * identifier of the field name.
3400              */
3401             public static final JsFunction.Member<JsDOMException> valueOf = new JsFunction.Member<JsDOMException>(Members.valueOf);
3402         }
3403     }
3404 
3405     /**
3406      * <p>An <b>opaque</b> class representing the global <tt>DOMImplementation</tt> class of JavaScript.</p>
3407      *
3408      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3409      * 
3410      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
3411      * generated into the target codes. Re-compilers must exit with error on the operations of
3412      * accessing that kind of class objects.
3413      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
3414      * and <tt>instanceof</tt> to it always <tt>true</tt>.
3415      */
3416     public class DOMImplementation extends JsClass
3417     {
3418         /**
3419          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
3420          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
3421          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
3422          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
3423          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
3424          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
3425          * either circumstance, the field names must be exactly same as the member names, as 
3426          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
3427          * based on the field names.</p>
3428          *
3429          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3430          * 
3431          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
3432          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
3433          * of class objects.
3434          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
3435          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
3436          * <pre>q.m</pre>
3437          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
3438          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
3439          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
3440          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
3441          * <pre>m</pre>
3442          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
3443          * error on the access to <b>opaque</b> fields declared by this class under any other 
3444          * circumstances.
3445          */
3446         public static class Member extends JsClass.Member
3447         {
3448             public Member(JsObject.Member q, Mid mid) {
3449                 super(q, mid);
3450             }
3451             public Member(Mid mid) {
3452                 super(mid);
3453             }
3454             @Override
3455             /**
3456              * <p>Evaluates the property, represented by the current member instance, of the
3457              * argument object.</p>
3458              * @param o The argument object
3459              * @return The value of the current member based on the object argument.
3460              * @since 1.0
3461              * @javascript Re-compilers must convert the instance invocation of this method into
3462              * the JavaScript expression: 
3463              * <pre>o.m</pre>
3464              * where <tt>m</tt> is the identifier name resolved from the current member
3465              * instance of the invocation.
3466              */
3467             public DOMImplementation with(ObjectLike o) {
3468                 return new DOMImplementation(super.with(o));
3469             }
3470             @Override
3471             /**
3472              * <p>Evaluates a property, represented by the current member instance, of the
3473              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
3474              * @return The value of the current member based on the JavaScript global object.
3475              * @since 1.0
3476              * @javascript Re-compilers must convert the instance invocation of this method into
3477              * the JavaScript expression: 
3478              * <pre>m</pre>
3479              * where <tt>m</tt> is the identifier name resolved from the current member
3480              * instance of the invocation.
3481              */
3482             public DOMImplementation with() {
3483                 return with(Js.win());
3484             }
3485 
3486             /**
3487              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3488              * name of this field, qualified by the current member instance of the field, and 
3489              * to access the property of the name on an object.</p>
3490              * @since 1.0
3491              * @javascript Re-compilers must resolve the member of this instance field to the
3492              * identifier of the field name appending to the identifier resolved from its 
3493              * qualifying member with a dot in between.
3494              */
3495             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
3496         }
3497 
3498         /**
3499          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
3500          * with the wrapping constructor.</p>
3501          * @param var The argument of an <b>opaque</b> object.
3502          * @since 1.0
3503          * @javascript Re-compilers must ignore the construction operation of this constructor,
3504          * that is, replacing it with its only argument.
3505          */
3506         public DOMImplementation(JsObject var) {
3507             super(var(var, (JsFunction<?>)null));
3508         }
3509 
3510         /**
3511          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3512          * without a qualifying member and to access the property of the name on an object.</p>
3513          * @since 1.0
3514          * @javascript Re-compilers must resolve the member of this static field to the
3515          * identifier of the field name.
3516          */
3517         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
3518 
3519         /**
3520          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
3521          * class of JavaScript.</p>
3522          *
3523          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3524          * 
3525          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
3526          * generated into the target codes. Re-compilers must exit with error on the operations of
3527          * accessing that kind of class objects.
3528          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
3529          * and <tt>instanceof</tt> to it always <tt>true</tt>.
3530          */
3531         public static class Prototype extends JsObject
3532         {
3533             /**
3534              * <p>An <b>internal</b> class containing membership data for its enclosing
3535              * opaque class.</p>
3536              * <p>This class is only used inside of <b>opaque</b> or <b>internal</b> classes or
3537              * class members.</p>
3538              *
3539              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3540              * 
3541              * @javascript Re-compilers must report error on resolving an <b>internal</b> class.
3542              */
3543             protected static abstract class Members extends JsObject.Members
3544             {
3545                 /**
3546                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3547                  * used internally to define a member of the same name.</p>
3548                  * @since 1.0
3549                  * @see DOM2Core.DOMImplementation.Prototype#createDocument
3550                  * @see DOM2Core.DOMImplementation.Prototype.Member#createDocument
3551                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3552                  */
3553                 public final static Mid createDocument     = id("createDocument"    );
3554                 /**
3555                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3556                  * used internally to define a member of the same name.</p>
3557                  * @since 1.0
3558                  * @see DOM2Core.DOMImplementation.Prototype#createDocumentType
3559                  * @see DOM2Core.DOMImplementation.Prototype.Member#createDocumentType
3560                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3561                  */
3562                 public final static Mid createDocumentType = id("createDocumentType");
3563                 /**
3564                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3565                  * used internally to define a member of the same name.</p>
3566                  * @since 1.0
3567                  * @see DOM2Core.DOMImplementation.Prototype#hasFeature
3568                  * @see DOM2Core.DOMImplementation.Prototype.Member#hasFeature
3569                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3570                  */
3571                 public final static Mid hasFeature         = id("hasFeature"        );
3572             }
3573             /**
3574              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
3575              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
3576              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
3577              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
3578              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
3579              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
3580              * either circumstance, the field names must be exactly same as the member names, as 
3581              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
3582              * based on the field names.</p>
3583              *
3584              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3585              * 
3586              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
3587              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
3588              * of class objects.
3589              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
3590              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
3591              * <pre>q.m</pre>
3592              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
3593              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
3594              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
3595              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
3596              * <pre>m</pre>
3597              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
3598              * error on the access to <b>opaque</b> fields declared by this class under any other 
3599              * circumstances.
3600              */
3601             public static class Member extends JsObject.Member
3602             {
3603                 /**
3604                  * <p>Internally constructs a member based on a qualifying member.</p>
3605                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
3606                  * or <b>internal</b> classes or class members.</p>
3607                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
3608                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
3609                  * declared in the declaring class of this constructor itself or its subclasses. 
3610                  * Under this circumstance, the field names must be exactly same as the member 
3611                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
3612                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
3613                  * to their names appending to the name resolved from the specified qualifying 
3614                  * member with a dot in between.</p>
3615                  * @param q A qualifying member
3616                  * @param mid The ID of the member to construct
3617                  * @since 1.0
3618                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
3619                  */
3620                 public Member(JsObject.Member q, Mid mid) {
3621                     super(q, mid);
3622                 }
3623                 /**
3624                  * <p>Internally constructs a member without a qualifying member.</p>
3625                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
3626                  * or <b>internal</b> classes or class members.</p>
3627                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
3628                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
3629                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
3630                  * itself and its subclasses. Under this circumstance, the field names must be
3631                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
3632                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
3633                  * @param mid The ID of the member to construct
3634                  * @since 1.0
3635                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
3636                  */
3637                 public Member(Mid mid) {
3638                     super(mid);
3639                 }
3640                 @Override
3641                 /**
3642                  * <p>Evaluates the property, represented by the current member instance, of the
3643                  * argument object.</p>
3644                  * @param o The argument object
3645                  * @return The value of the current member based on the object argument.
3646                  * @since 1.0
3647                  * @javascript Re-compilers must convert the instance invocation of this method into
3648                  * the JavaScript expression: 
3649                  * <pre>o.m</pre>
3650                  * where <tt>m</tt> is the identifier name resolved from the current member
3651                  * instance of the invocation.
3652                  */
3653                 public Prototype with(ObjectLike o) {
3654                     return new Prototype(super.with(o));
3655                 }
3656 
3657                 /**
3658                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3659                  * name of this field, qualified by the current member instance of the field, and 
3660                  * to access the property of the name on an object.</p>
3661                  * @since 1.0
3662                  * @see JsDOMImplementation#valueOf()
3663                  * @javascript Re-compilers must resolve the member of this instance field to the
3664                  * identifier of the field name appending to the identifier resolved from its 
3665                  * qualifying member with a dot in between.
3666                  */
3667                 public final JsFunction.Member<JsDOMImplementation> valueOf = new JsFunction.Member<JsDOMImplementation>(this, Members.valueOf);
3668                 /**
3669                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3670                  * name of this field, qualified by the current member instance of the field, and 
3671                  * to access the property of the name on an object.</p>
3672                  * @since 1.0
3673                  * @see JsDOMImplementation#createDocument(String, String, JsDocumentType)
3674                  * @javascript Re-compilers must resolve the member of this instance field to the
3675                  * identifier of the field name appending to the identifier resolved from its 
3676                  * qualifying member with a dot in between.
3677                  */
3678                 public final JsFunction.Member<JsDocument> createDocument = new JsFunction.Member<JsDocument>(this, Members.createDocument);
3679                 /**
3680                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3681                  * name of this field, qualified by the current member instance of the field, and 
3682                  * to access the property of the name on an object.</p>
3683                  * @since 1.0
3684                  * @see JsDOMImplementation#createDocumentType(String, String, String)
3685                  * @javascript Re-compilers must resolve the member of this instance field to the
3686                  * identifier of the field name appending to the identifier resolved from its 
3687                  * qualifying member with a dot in between.
3688                  */
3689                 public final JsFunction.Member<JsDocumentType> createDocumentType = new JsFunction.Member<JsDocumentType>(this, Members.createDocumentType);
3690                 /**
3691                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3692                  * name of this field, qualified by the current member instance of the field, and 
3693                  * to access the property of the name on an object.</p>
3694                  * @since 1.0
3695                  * @see JsDOMImplementation#hasFeature(String, String)
3696                  * @javascript Re-compilers must resolve the member of this instance field to the
3697                  * identifier of the field name appending to the identifier resolved from its 
3698                  * qualifying member with a dot in between.
3699                  */
3700                 public final JsFunction.Member<java.lang.Boolean> hasFeature = new JsFunction.Member<java.lang.Boolean>(this, Members.hasFeature);
3701             }
3702 
3703             /**
3704              * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
3705              * with the wrapping constructor.</p>
3706              * @param var The argument of an <b>opaque</b> object.
3707              * @since 1.0
3708              * @javascript Re-compilers must ignore the construction operation of this constructor,
3709              * that is, replacing it with its only argument.
3710              */
3711             public Prototype(JsObject var) {
3712                 super(var(var, (JsFunction<?>)null));
3713             }
3714 
3715             /**
3716              * <p>An <b>opaque</b> static field defining a member that is named by the field name
3717              * without a qualifying member and to access the property of the name on an object.</p>
3718              * @since 1.0
3719              * @see JsDOMImplementation#valueOf()
3720              * @javascript Re-compilers must resolve the member of this static field to the
3721              * identifier of the field name.
3722              */
3723             public static final JsFunction.Member<JsDOMImplementation> valueOf = new JsFunction.Member<JsDOMImplementation>(Members.valueOf);
3724             /**
3725              * <p>An <b>opaque</b> static field defining a member that is named by the field name
3726              * without a qualifying member and to access the property of the name on an object.</p>
3727              * @since 1.0
3728              * @see JsDOMImplementation#createDocument(String, String, JsDocumentType)
3729              * @javascript Re-compilers must resolve the member of this static field to the
3730              * identifier of the field name.
3731              */
3732             public static final JsFunction.Member<JsDocument> createDocument = new JsFunction.Member<JsDocument>(Members.createDocument);
3733             /**
3734              * <p>An <b>opaque</b> static field defining a member that is named by the field name
3735              * without a qualifying member and to access the property of the name on an object.</p>
3736              * @since 1.0
3737              * @see JsDOMImplementation#createDocumentType(String, String, String)
3738              * @javascript Re-compilers must resolve the member of this static field to the
3739              * identifier of the field name.
3740              */
3741             public static final JsFunction.Member<JsDocumentType> createDocumentType = new JsFunction.Member<JsDocumentType>(Members.createDocumentType);
3742             /**
3743              * <p>An <b>opaque</b> static field defining a member that is named by the field name
3744              * without a qualifying member and to access the property of the name on an object.</p>
3745              * @since 1.0
3746              * @see JsDOMImplementation#hasFeature(String, String)
3747              * @javascript Re-compilers must resolve the member of this static field to the
3748              * identifier of the field name.
3749              */
3750             public static final JsFunction.Member<java.lang.Boolean> hasFeature = new JsFunction.Member<java.lang.Boolean>(Members.hasFeature);
3751         }
3752     }
3753 
3754     /**
3755      * <p>An <b>opaque</b> class representing the global <tt>Element</tt> class of JavaScript.</p>
3756      *
3757      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3758      * 
3759      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
3760      * generated into the target codes. Re-compilers must exit with error on the operations of
3761      * accessing that kind of class objects.
3762      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
3763      * and <tt>instanceof</tt> to it always <tt>true</tt>.
3764      */
3765     public class Element extends JsClass
3766     {
3767         /**
3768          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
3769          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
3770          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
3771          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
3772          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
3773          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
3774          * either circumstance, the field names must be exactly same as the member names, as 
3775          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
3776          * based on the field names.</p>
3777          *
3778          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3779          * 
3780          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
3781          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
3782          * of class objects.
3783          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
3784          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
3785          * <pre>q.m</pre>
3786          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
3787          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
3788          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
3789          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
3790          * <pre>m</pre>
3791          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
3792          * error on the access to <b>opaque</b> fields declared by this class under any other 
3793          * circumstances.
3794          */
3795         public static class Member extends JsClass.Member
3796         {
3797             public Member(JsObject.Member q, Mid mid) {
3798                 super(q, mid);
3799             }
3800             public Member(Mid mid) {
3801                 super(mid);
3802             }
3803             @Override
3804             /**
3805              * <p>Evaluates the property, represented by the current member instance, of the
3806              * argument object.</p>
3807              * @param o The argument object
3808              * @return The value of the current member based on the object argument.
3809              * @since 1.0
3810              * @javascript Re-compilers must convert the instance invocation of this method into
3811              * the JavaScript expression: 
3812              * <pre>o.m</pre>
3813              * where <tt>m</tt> is the identifier name resolved from the current member
3814              * instance of the invocation.
3815              */
3816             public Element with(ObjectLike o) {
3817                 return new Element(super.with(o));
3818             }
3819             @Override
3820             /**
3821              * <p>Evaluates a property, represented by the current member instance, of the
3822              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
3823              * @return The value of the current member based on the JavaScript global object.
3824              * @since 1.0
3825              * @javascript Re-compilers must convert the instance invocation of this method into
3826              * the JavaScript expression: 
3827              * <pre>m</pre>
3828              * where <tt>m</tt> is the identifier name resolved from the current member
3829              * instance of the invocation.
3830              */
3831             public Element with() {
3832                 return with(Js.win());
3833             }
3834 
3835             /**
3836              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
3837              * name of this field, qualified by the current member instance of the field, and 
3838              * to access the property of the name on an object.</p>
3839              * @since 1.0
3840              * @javascript Re-compilers must resolve the member of this instance field to the
3841              * identifier of the field name appending to the identifier resolved from its 
3842              * qualifying member with a dot in between.
3843              */
3844             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
3845         }
3846 
3847         /**
3848          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
3849          * with the wrapping constructor.</p>
3850          * @param var The argument of an <b>opaque</b> object.
3851          * @since 1.0
3852          * @javascript Re-compilers must ignore the construction operation of this constructor,
3853          * that is, replacing it with its only argument.
3854          */
3855         public Element(JsObject var) {
3856             super(var(var, (JsFunction<?>)null));
3857         }
3858 
3859         /**
3860          * <p>An <b>opaque</b> static field defining a member that is named by the field name
3861          * without a qualifying member and to access the property of the name on an object.</p>
3862          * @since 1.0
3863          * @javascript Re-compilers must resolve the member of this static field to the
3864          * identifier of the field name.
3865          */
3866         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
3867 
3868         /**
3869          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
3870          * class of JavaScript.</p>
3871          *
3872          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3873          * 
3874          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
3875          * generated into the target codes. Re-compilers must exit with error on the operations of
3876          * accessing that kind of class objects.
3877          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
3878          * and <tt>instanceof</tt> to it always <tt>true</tt>.
3879          */
3880         public static class Prototype extends JsNode
3881         {
3882             /**
3883              * <p>An <b>internal</b> class containing membership data for its enclosing
3884              * opaque class.</p>
3885              * <p>This class is only used inside of <b>opaque</b> or <b>internal</b> classes or
3886              * class members.</p>
3887              *
3888              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
3889              * 
3890              * @javascript Re-compilers must report error on resolving an <b>internal</b> class.
3891              */
3892             protected static abstract class Members extends JsNode.Members
3893             {
3894                 /**
3895                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3896                  * used internally to define a member of the same name.</p>
3897                  * @since 1.0
3898                  * @see DOM2Core.Element.Prototype#addEventListener
3899                  * @see DOM2Core.Element.Prototype.Member#addEventListener
3900                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3901                  */
3902                 public final static Mid addEventListener       = id("addEventListener"      );
3903                 /**
3904                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3905                  * used internally to define a member of the same name.</p>
3906                  * @since 1.0
3907                  * @see DOM2Core.Element.Prototype#attachEvent
3908                  * @see DOM2Core.Element.Prototype.Member#attachEvent
3909                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3910                  */
3911                 public final static Mid attachEvent            = id("attachEvent"           );
3912                 /**
3913                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3914                  * used internally to define a member of the same name.</p>
3915                  * @since 1.0
3916                  * @see DOM2Core.Element.Prototype#detachEvent
3917                  * @see DOM2Core.Element.Prototype.Member#detachEvent
3918                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3919                  */
3920                 public final static Mid detachEvent            = id("detachEvent"           );
3921                 /**
3922                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3923                  * used internally to define a member of the same name.</p>
3924                  * @since 1.0
3925                  * @see DOM2Core.Element.Prototype#dispatchEvent
3926                  * @see DOM2Core.Element.Prototype.Member#dispatchEvent
3927                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3928                  */
3929                 public final static Mid dispatchEvent          = id("dispatchEvent"         );
3930                 /**
3931                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3932                  * used internally to define a member of the same name.</p>
3933                  * @since 1.0
3934                  * @see DOM2Core.Element.Prototype#fireEvent
3935                  * @see DOM2Core.Element.Prototype.Member#fireEvent
3936                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3937                  */
3938                 public final static Mid fireEvent              = id("fireEvent"             );
3939                 /**
3940                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3941                  * used internally to define a member of the same name.</p>
3942                  * @since 1.0
3943                  * @see DOM2Core.Element.Prototype#getAttribute
3944                  * @see DOM2Core.Element.Prototype.Member#getAttribute
3945                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3946                  */
3947                 public final static Mid getAttribute           = id("getAttribute"          );
3948                 /**
3949                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3950                  * used internally to define a member of the same name.</p>
3951                  * @since 1.0
3952                  * @see DOM2Core.Element.Prototype#getAttributeNS
3953                  * @see DOM2Core.Element.Prototype.Member#getAttributeNS
3954                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3955                  */
3956                 public final static Mid getAttributeNS         = id("getAttributeNS"        );
3957                 /**
3958                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3959                  * used internally to define a member of the same name.</p>
3960                  * @since 1.0
3961                  * @see DOM2Core.Element.Prototype#getAttributeNode
3962                  * @see DOM2Core.Element.Prototype.Member#getAttributeNode
3963                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3964                  */
3965                 public final static Mid getAttributeNode       = id("getAttributeNode"      );
3966                 /**
3967                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3968                  * used internally to define a member of the same name.</p>
3969                  * @since 1.0
3970                  * @see DOM2Core.Element.Prototype#getAttributeNodeNS
3971                  * @see DOM2Core.Element.Prototype.Member#getAttributeNodeNS
3972                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3973                  */
3974                 public final static Mid getAttributeNodeNS     = id("getAttributeNodeNS"    );
3975                 /**
3976                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3977                  * used internally to define a member of the same name.</p>
3978                  * @since 1.0
3979                  * @see DOM2Core.Element.Prototype#getElementsByTagName
3980                  * @see DOM2Core.Element.Prototype.Member#getElementsByTagName
3981                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3982                  */
3983                 public final static Mid getElementsByTagName   = id("getElementsByTagName"  );
3984                 /**
3985                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3986                  * used internally to define a member of the same name.</p>
3987                  * @since 1.0
3988                  * @see DOM2Core.Element.Prototype#getElementsByTagNameNS
3989                  * @see DOM2Core.Element.Prototype.Member#getElementsByTagNameNS
3990                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
3991                  */
3992                 public final static Mid getElementsByTagNameNS = id("getElementsByTagNameNS");
3993                 /**
3994                  * <p>An <b>internal</b> static field defining a member ID of the field name and
3995                  * used internally to define a member of the same name.</p>
3996                  * @since 1.0
3997                  * @see DOM2Core.Element.Prototype#hasAttribute
3998                  * @see DOM2Core.Element.Prototype.Member#hasAttribute
3999                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4000                  */
4001                 public final static Mid hasAttribute           = id("hasAttribute"          );
4002                 /**
4003                  * <p>An <b>internal</b> static field defining a member ID of the field name and
4004                  * used internally to define a member of the same name.</p>
4005                  * @since 1.0
4006                  * @see DOM2Core.Element.Prototype#hasAttributeNS
4007                  * @see DOM2Core.Element.Prototype.Member#hasAttributeNS
4008                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4009                  */
4010                 public final static Mid hasAttributeNS         = id("hasAttributeNS"        );
4011                 /**
4012                  * <p>An <b>internal</b> static field defining a member ID of the field name and
4013                  * used internally to define a member of the same name.</p>
4014                  * @since 1.0
4015                  * @see DOM2Core.Element.Prototype#removeAttribute
4016                  * @see DOM2Core.Element.Prototype.Member#removeAttribute
4017                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4018                  */
4019                 public final static Mid removeAttribute        = id("removeAttribute"       );
4020                 /**
4021                  * <p>An <b>internal</b> static field defining a member ID of the field name and
4022                  * used internally to define a member of the same name.</p>
4023                  * @since 1.0
4024                  * @see DOM2Core.Element.Prototype#removeAttributeNode
4025                  * @see DOM2Core.Element.Prototype.Member#removeAttributeNode
4026                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4027                  */
4028                 public final static Mid removeAttributeNode    = id("removeAttributeNode"   );
4029                 /**
4030                  * <p>An <b>internal</b> static field defining a member ID of the field name and
4031                  * used internally to define a member of the same name.</p>
4032                  * @since 1.0
4033                  * @see DOM2Core.Element.Prototype#removeAttributeNS
4034                  * @see DOM2Core.Element.Prototype.Member#removeAttributeNS
4035                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4036                  */
4037                 public final static Mid removeAttributeNS      = id("removeAttributeNS"     );
4038                 /**
4039                  * <p>An <b>internal</b> static field defining a member ID of the field name and
4040                  * used internally to define a member of the same name.</p>
4041                  * @since 1.0
4042                  * @see DOM2Core.Element.Prototype#removeEventListener
4043                  * @see DOM2Core.Element.Prototype.Member#removeEventListener
4044                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4045                  */
4046                 public final static Mid removeEventListener    = id("removeEventListener"   );
4047                 /**
4048                  * <p>An <b>internal</b> static field defining a member ID of the field name and
4049                  * used internally to define a member of the same name.</p>
4050                  * @since 1.0
4051                  * @see DOM2Core.Element.Prototype#removeEventListener
4052                  * @see DOM2Core.Element.Prototype.Member#removeEventListener
4053                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4054                  */
4055                 public final static Mid setAttribute           = id("setAttribute"          );
4056                 /**
4057                  * <p>An <b>internal</b> static field defining a member ID of the field name and
4058                  * used internally to define a member of the same name.</p>
4059                  * @since 1.0
4060                  * @see DOM2Core.Element.Prototype#setAttributeNode
4061                  * @see DOM2Core.Element.Prototype.Member#setAttributeNode
4062                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4063                  */
4064                 public final static Mid setAttributeNode       = id("setAttributeNode"      );
4065                 /**
4066                  * <p>An <b>internal</b> static field defining a member ID of the field name and
4067                  * used internally to define a member of the same name.</p>
4068                  * @since 1.0
4069                  * @see DOM2Core.Element.Prototype#setAttributeNodeNS
4070                  * @see DOM2Core.Element.Prototype.Member#setAttributeNodeNS
4071                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4072                  */
4073                 public final static Mid setAttributeNodeNS     = id("setAttributeNodeNS"    );
4074                 /**
4075                  * <p>An <b>internal</b> static field defining a member ID of the field name and
4076                  * used internally to define a member of the same name.</p>
4077                  * @since 1.0
4078                  * @see DOM2Core.Element.Prototype#setAttributeNS
4079                  * @see DOM2Core.Element.Prototype.Member#setAttributeNS
4080                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4081                  */
4082                 public final static Mid setAttributeNS         = id("setAttributeNS"        );
4083             }
4084             /**
4085              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
4086              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
4087              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
4088              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
4089              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
4090              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
4091              * either circumstance, the field names must be exactly same as the member names, as 
4092              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
4093              * based on the field names.</p>
4094              *
4095              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
4096              * 
4097              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
4098              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
4099              * of class objects.
4100              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
4101              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
4102              * <pre>q.m</pre>
4103              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
4104              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
4105              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
4106              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
4107              * <pre>m</pre>
4108              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
4109              * error on the access to <b>opaque</b> fields declared by this class under any other 
4110              * circumstances.
4111              */
4112             public static class Member extends JsNode.Member
4113             {
4114                 /**
4115                  * <p>Internally constructs a member based on a qualifying member.</p>
4116                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
4117                  * or <b>internal</b> classes or class members.</p>
4118                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
4119                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
4120                  * declared in the declaring class of this constructor itself or its subclasses. 
4121                  * Under this circumstance, the field names must be exactly same as the member 
4122                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
4123                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
4124                  * to their names appending to the name resolved from the specified qualifying 
4125                  * member with a dot in between.</p>
4126                  * @param q A qualifying member
4127                  * @param mid The ID of the member to construct
4128                  * @since 1.0
4129                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
4130                  */
4131                 public Member(JsObject.Member q, Mid mid) {
4132                     super(q, mid);
4133                 }
4134                 /**
4135                  * <p>Internally constructs a member without a qualifying member.</p>
4136                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
4137                  * or <b>internal</b> classes or class members.</p>
4138                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
4139                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
4140                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
4141                  * itself and its subclasses. Under this circumstance, the field names must be
4142                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
4143                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
4144                  * @param mid The ID of the member to construct
4145                  * @since 1.0
4146                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
4147                  */
4148                 public Member(Mid mid) {
4149                     super(mid);
4150                 }
4151                 @Override
4152                 /**
4153                  * <p>Evaluates the property, represented by the current member instance, of the
4154                  * argument object.</p>
4155                  * @param o The argument object
4156                  * @return The value of the current member based on the object argument.
4157                  * @since 1.0
4158                  * @javascript Re-compilers must convert the instance invocation of this method into
4159                  * the JavaScript expression: 
4160                  * <pre>o.m</pre>
4161                  * where <tt>m</tt> is the identifier name resolved from the current member
4162                  * instance of the invocation.
4163                  */
4164                 public Prototype with(ObjectLike o) {
4165                     return new Prototype(super.with(o));
4166                 }
4167 
4168                 /**
4169                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4170                  * name of this field, qualified by the current member instance of the field, and 
4171                  * to access the property of the name on an object.</p>
4172                  * @since 1.0
4173                  * @see JsElement#valueOf()
4174                  * @javascript Re-compilers must resolve the member of this instance field to the
4175                  * identifier of the field name appending to the identifier resolved from its 
4176                  * qualifying member with a dot in between.
4177                  */
4178                 public final JsFunction.Member<JsElement> valueOf                = new JsFunction.Member<JsElement>(this, Members.valueOf               );
4179                 /**
4180                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4181                  * name of this field, qualified by the current member instance of the field, and 
4182                  * to access the property of the name on an object.</p>
4183                  * @since 1.0
4184                  * @see JsElement#addEventListener(String, JsFunction, Boolean)
4185                  * @javascript Re-compilers must resolve the member of this instance field to the
4186                  * identifier of the field name appending to the identifier resolved from its 
4187                  * qualifying member with a dot in between.
4188                  */
4189                 public final JsFunction.Member<?> addEventListener       = new JsFunction.Member<java.lang.Object>    (this, Members.addEventListener      );
4190                 /**
4191                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4192                  * name of this field, qualified by the current member instance of the field, and 
4193                  * to access the property of the name on an object.</p>
4194                  * @since 1.0
4195                  * @see JsElement#attachEvent(String, JsFunction)
4196                  * @javascript Re-compilers must resolve the member of this instance field to the
4197                  * identifier of the field name appending to the identifier resolved from its 
4198                  * qualifying member with a dot in between.
4199                  */
4200                 public final JsFunction.Member<?> attachEvent = new JsFunction.Member<java.lang.Object>(this, Members.attachEvent);
4201                 /**
4202                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4203                  * name of this field, qualified by the current member instance of the field, and 
4204                  * to access the property of the name on an object.</p>
4205                  * @since 1.0
4206                  * @see JsElement#detachEvent(String, JsFunction)
4207                  * @javascript Re-compilers must resolve the member of this instance field to the
4208                  * identifier of the field name appending to the identifier resolved from its 
4209                  * qualifying member with a dot in between.
4210                  */
4211                 public final JsFunction.Member<?> detachEvent = new JsFunction.Member<java.lang.Object>(this, Members.detachEvent);
4212                 /**
4213                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4214                  * name of this field, qualified by the current member instance of the field, and 
4215                  * to access the property of the name on an object.</p>
4216                  * @since 1.0
4217                  * @see JsElement#dispatchEvent(JsEvent)
4218                  * @javascript Re-compilers must resolve the member of this instance field to the
4219                  * identifier of the field name appending to the identifier resolved from its 
4220                  * qualifying member with a dot in between.
4221                  */
4222                 public final JsFunction.Member<java.lang.Boolean> dispatchEvent          = new JsFunction.Member<java.lang.Boolean>(this, Members.dispatchEvent         );
4223                 /**
4224                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4225                  * name of this field, qualified by the current member instance of the field, and 
4226                  * to access the property of the name on an object.</p>
4227                  * @since 1.0
4228                  * @see JsElement#fireEvent(JsEvent)
4229                  * @javascript Re-compilers must resolve the member of this instance field to the
4230                  * identifier of the field name appending to the identifier resolved from its 
4231                  * qualifying member with a dot in between.
4232                  */
4233                 public final JsFunction.Member<java.lang.Boolean> fireEvent              = new JsFunction.Member<java.lang.Boolean>(this, Members.fireEvent             );
4234                 /**
4235                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4236                  * name of this field, qualified by the current member instance of the field, and 
4237                  * to access the property of the name on an object.</p>
4238                  * @since 1.0
4239                  * @see JsElement#getAttribute(String)
4240                  * @see JsElement#getAttribute(StringLike)
4241                  * @javascript Re-compilers must resolve the member of this instance field to the
4242                  * identifier of the field name appending to the identifier resolved from its 
4243                  * qualifying member with a dot in between.
4244                  */
4245                 public final JsFunction.Member<java.lang.String>  getAttribute           = new JsFunction.Member<java.lang.String> (this, Members.getAttribute          );
4246                 /**
4247                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4248                  * name of this field, qualified by the current member instance of the field, and 
4249                  * to access the property of the name on an object.</p>
4250                  * @since 1.0
4251                  * @see JsElement#getAttributeNS(String, String)
4252                  * @javascript Re-compilers must resolve the member of this instance field to the
4253                  * identifier of the field name appending to the identifier resolved from its 
4254                  * qualifying member with a dot in between.
4255                  */
4256                 public final JsFunction.Member<java.lang.String>  getAttributeNS         = new JsFunction.Member<java.lang.String> (this, Members.getAttributeNS        );
4257                 /**
4258                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4259                  * name of this field, qualified by the current member instance of the field, and 
4260                  * to access the property of the name on an object.</p>
4261                  * @since 1.0
4262                  * @see JsElement#getAttributeNode(String)
4263                  * @see JsElement#getAttributeNode(StringLike)
4264                  * @javascript Re-compilers must resolve the member of this instance field to the
4265                  * identifier of the field name appending to the identifier resolved from its 
4266                  * qualifying member with a dot in between.
4267                  */
4268                 public final JsFunction.Member<JsAttr>    getAttributeNode       = new JsFunction.Member<JsAttr>   (this, Members.getAttributeNode      );
4269                 /**
4270                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4271                  * name of this field, qualified by the current member instance of the field, and 
4272                  * to access the property of the name on an object.</p>
4273                  * @since 1.0
4274                  * @see JsElement#getAttributeNodeNS(String, String)
4275                  * @javascript Re-compilers must resolve the member of this instance field to the
4276                  * identifier of the field name appending to the identifier resolved from its 
4277                  * qualifying member with a dot in between.
4278                  */
4279                 public final JsFunction.Member<JsAttr>    getAttributeNodeNS     = new JsFunction.Member<JsAttr>   (this, Members.getAttributeNodeNS    );
4280                 /**
4281                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4282                  * name of this field, qualified by the current member instance of the field, and 
4283                  * to access the property of the name on an object.</p>
4284                  * @since 1.0
4285                  * @see JsElement#getElementsByTagName(String)
4286                  * @see JsElement#getElementsByTagName(StringLike)
4287                  * @javascript Re-compilers must resolve the member of this instance field to the
4288                  * identifier of the field name appending to the identifier resolved from its 
4289                  * qualifying member with a dot in between.
4290                  */
4291                 public final JsFunction.Member<JsNodeList<? extends JsElement>> getElementsByTagName   = new JsFunction.Member<JsNodeList<? extends JsElement>>(this, Members.getElementsByTagName  );
4292                 /**
4293                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4294                  * name of this field, qualified by the current member instance of the field, and 
4295                  * to access the property of the name on an object.</p>
4296                  * @since 1.0
4297                  * @see JsElement#getElementsByTagNameNS(String, String)
4298                  * @javascript Re-compilers must resolve the member of this instance field to the
4299                  * identifier of the field name appending to the identifier resolved from its 
4300                  * qualifying member with a dot in between.
4301                  */
4302                 public final JsFunction.Member<JsNodeList<? extends JsElement>> getElementsByTagNameNS = new JsFunction.Member<JsNodeList<? extends JsElement>>(this, Members.getElementsByTagNameNS);
4303                 /**
4304                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4305                  * name of this field, qualified by the current member instance of the field, and 
4306                  * to access the property of the name on an object.</p>
4307                  * @since 1.0
4308                  * @see JsElement#hasAttribute(String)
4309                  * @see JsElement#hasAttribute(StringLike)
4310                  * @javascript Re-compilers must resolve the member of this instance field to the
4311                  * identifier of the field name appending to the identifier resolved from its 
4312                  * qualifying member with a dot in between.
4313                  */
4314                 public final JsFunction.Member<java.lang.Boolean> hasAttribute           = new JsFunction.Member<java.lang.Boolean>(this, Members.hasAttribute          );
4315                 /**
4316                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4317                  * name of this field, qualified by the current member instance of the field, and 
4318                  * to access the property of the name on an object.</p>
4319                  * @since 1.0
4320                  * @see JsElement#hasAttributeNS(String, String)
4321                  * @javascript Re-compilers must resolve the member of this instance field to the
4322                  * identifier of the field name appending to the identifier resolved from its 
4323                  * qualifying member with a dot in between.
4324                  */
4325                 public final JsFunction.Member<java.lang.Boolean> hasAttributeNS         = new JsFunction.Member<java.lang.Boolean>(this, Members.hasAttributeNS        );
4326                 /**
4327                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4328                  * name of this field, qualified by the current member instance of the field, and 
4329                  * to access the property of the name on an object.</p>
4330                  * @since 1.0
4331                  * @see JsElement#removeAttribute(String)
4332                  * @see JsElement#removeAttribute(StringLike)
4333                  * @javascript Re-compilers must resolve the member of this instance field to the
4334                  * identifier of the field name appending to the identifier resolved from its 
4335                  * qualifying member with a dot in between.
4336                  */
4337                 public final JsFunction.Member<?>         removeAttribute        = new JsFunction.Member<java.lang.Object>    (this, Members.removeAttribute       );
4338                 /**
4339                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4340                  * name of this field, qualified by the current member instance of the field, and 
4341                  * to access the property of the name on an object.</p>
4342                  * @since 1.0
4343                  * @see JsElement#removeAttributeNode(JsAttr)
4344                  * @javascript Re-compilers must resolve the member of this instance field to the
4345                  * identifier of the field name appending to the identifier resolved from its 
4346                  * qualifying member with a dot in between.
4347                  */
4348                 public final JsFunction.Member<JsAttr>    removeAttributeNode    = new JsFunction.Member<JsAttr>   (this, Members.removeAttributeNode   );
4349                 /**
4350                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4351                  * name of this field, qualified by the current member instance of the field, and 
4352                  * to access the property of the name on an object.</p>
4353                  * @since 1.0
4354                  * @see JsElement#removeAttributeNS(String, String)
4355                  * @javascript Re-compilers must resolve the member of this instance field to the
4356                  * identifier of the field name appending to the identifier resolved from its 
4357                  * qualifying member with a dot in between.
4358                  */
4359                 public final JsFunction.Member<?>         removeAttributeNS      = new JsFunction.Member<java.lang.Object>    (this, Members.removeAttributeNS     );
4360                 /**
4361                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4362                  * name of this field, qualified by the current member instance of the field, and 
4363                  * to access the property of the name on an object.</p>
4364                  * @since 1.0
4365                  * @see JsElement#removeEventListener(String, JsFunction, Boolean)
4366                  * @javascript Re-compilers must resolve the member of this instance field to the
4367                  * identifier of the field name appending to the identifier resolved from its 
4368                  * qualifying member with a dot in between.
4369                  */
4370                 public final JsFunction.Member<?>         removeEventListener    = new JsFunction.Member<java.lang.Object>    (this, Members.removeEventListener   );
4371                 /**
4372                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4373                  * name of this field, qualified by the current member instance of the field, and 
4374                  * to access the property of the name on an object.</p>
4375                  * @since 1.0
4376                  * @see JsElement#setAttribute(String, Object)
4377                  * @javascript Re-compilers must resolve the member of this instance field to the
4378                  * identifier of the field name appending to the identifier resolved from its 
4379                  * qualifying member with a dot in between.
4380                  */
4381                 public final JsFunction.Member<?>         setAttribute           = new JsFunction.Member<java.lang.Object>    (this, Members.setAttribute          );
4382                 /**
4383                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4384                  * name of this field, qualified by the current member instance of the field, and 
4385                  * to access the property of the name on an object.</p>
4386                  * @since 1.0
4387                  * @see JsElement#setAttributeNode(JsAttr)
4388                  * @javascript Re-compilers must resolve the member of this instance field to the
4389                  * identifier of the field name appending to the identifier resolved from its 
4390                  * qualifying member with a dot in between.
4391                  */
4392                 public final JsFunction.Member<JsAttr>    setAttributeNode       = new JsFunction.Member<JsAttr>   (this, Members.setAttributeNode      );
4393                 /**
4394                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4395                  * name of this field, qualified by the current member instance of the field, and 
4396                  * to access the property of the name on an object.</p>
4397                  * @since 1.0
4398                  * @see JsElement#setAttributeNodeNS(JsAttr)
4399                  * @javascript Re-compilers must resolve the member of this instance field to the
4400                  * identifier of the field name appending to the identifier resolved from its 
4401                  * qualifying member with a dot in between.
4402                  */
4403                 public final JsFunction.Member<JsAttr>    setAttributeNodeNS     = new JsFunction.Member<JsAttr>   (this, Members.setAttributeNodeNS    );
4404                 /**
4405                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4406                  * name of this field, qualified by the current member instance of the field, and 
4407                  * to access the property of the name on an object.</p>
4408                  * @since 1.0
4409                  * @see JsElement#setAttributeNS(String, String, String)
4410                  * @javascript Re-compilers must resolve the member of this instance field to the
4411                  * identifier of the field name appending to the identifier resolved from its 
4412                  * qualifying member with a dot in between.
4413                  */
4414                 public final JsFunction.Member<?>         setAttributeNS         = new JsFunction.Member<java.lang.Object>    (this, Members.setAttributeNS        );
4415             }
4416 
4417             /**
4418              * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
4419              * with the wrapping constructor.</p>
4420              * @param var The argument of an <b>opaque</b> object.
4421              * @since 1.0
4422              * @javascript Re-compilers must ignore the construction operation of this constructor,
4423              * that is, replacing it with its only argument.
4424              */
4425             public Prototype(JsObject var) {
4426                 super(var(var, (JsFunction<?>)null));
4427             }
4428 
4429             /**
4430              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4431              * without a qualifying member and to access the property of the name on an object.</p>
4432              * @since 1.0
4433              * @see JsElement#valueOf()
4434              * @javascript Re-compilers must resolve the member of this static field to the
4435              * identifier of the field name.
4436              */
4437             public static final JsFunction.Member<JsElement> valueOf                = new JsFunction.Member<JsElement>(Members.valueOf               );
4438             /**
4439              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4440              * without a qualifying member and to access the property of the name on an object.</p>
4441              * @since 1.0
4442              * @see JsElement#addEventListener(String, JsFunction, Boolean)
4443              * @javascript Re-compilers must resolve the member of this static field to the
4444              * identifier of the field name.
4445              */
4446             public static final JsFunction.Member<?>         addEventListener       = new JsFunction.Member<java.lang.Object>    (Members.addEventListener      );
4447             /**
4448              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4449              * without a qualifying member and to access the property of the name on an object.</p>
4450              * @since 1.0
4451              * @see JsElement#attachEvent(String, JsFunction)
4452              * @javascript Re-compilers must resolve the member of this static field to the
4453              * identifier of the field name.
4454              */
4455             public static final JsFunction.Member<?> attachEvent         = new JsFunction.Member<java.lang.Object>(Members.attachEvent        );
4456             /**
4457              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4458              * without a qualifying member and to access the property of the name on an object.</p>
4459              * @since 1.0
4460              * @see JsElement#detachEvent(String, JsFunction)
4461              * @javascript Re-compilers must resolve the member of this static field to the
4462              * identifier of the field name.
4463              */
4464             public static final JsFunction.Member<?> detachEvent         = new JsFunction.Member<java.lang.Object>(Members.detachEvent        );
4465             /**
4466              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4467              * without a qualifying member and to access the property of the name on an object.</p>
4468              * @since 1.0
4469              * @see JsElement#dispatchEvent(JsEvent)
4470              * @javascript Re-compilers must resolve the member of this static field to the
4471              * identifier of the field name.
4472              */
4473             public static final JsFunction.Member<java.lang.Boolean> dispatchEvent          = new JsFunction.Member<java.lang.Boolean>(Members.dispatchEvent         );
4474             /**
4475              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4476              * without a qualifying member and to access the property of the name on an object.</p>
4477              * @since 1.0
4478              * @see JsElement#fireEvent(JsEvent)
4479              * @javascript Re-compilers must resolve the member of this static field to the
4480              * identifier of the field name.
4481              */
4482             public static final JsFunction.Member<java.lang.Boolean> fireEvent              = new JsFunction.Member<java.lang.Boolean>(Members.fireEvent             );
4483             /**
4484              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4485              * without a qualifying member and to access the property of the name on an object.</p>
4486              * @since 1.0
4487              * @see JsElement#getAttribute(String)
4488              * @see JsElement#getAttribute(StringLike)
4489              * @javascript Re-compilers must resolve the member of this static field to the
4490              * identifier of the field name.
4491              */
4492             public static final JsFunction.Member<java.lang.String>  getAttribute           = new JsFunction.Member<java.lang.String> (Members.getAttribute          );
4493             /**
4494              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4495              * without a qualifying member and to access the property of the name on an object.</p>
4496              * @since 1.0
4497              * @see JsElement#getAttributeNS(String, String)
4498              * @javascript Re-compilers must resolve the member of this static field to the
4499              * identifier of the field name.
4500              */
4501             public static final JsFunction.Member<java.lang.String>  getAttributeNS         = new JsFunction.Member<java.lang.String> (Members.getAttributeNS        );
4502             /**
4503              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4504              * without a qualifying member and to access the property of the name on an object.</p>
4505              * @since 1.0
4506              * @see JsElement#getAttributeNode(String)
4507              * @see JsElement#getAttributeNode(StringLike)
4508              * @javascript Re-compilers must resolve the member of this static field to the
4509              * identifier of the field name.
4510              */
4511             public static final JsFunction.Member<JsAttr>    getAttributeNode       = new JsFunction.Member<JsAttr>   (Members.getAttributeNode      );
4512             /**
4513              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4514              * without a qualifying member and to access the property of the name on an object.</p>
4515              * @since 1.0
4516              * @see JsElement#getAttributeNodeNS(String, String)
4517              * @javascript Re-compilers must resolve the member of this static field to the
4518              * identifier of the field name.
4519              */
4520             public static final JsFunction.Member<JsAttr>    getAttributeNodeNS     = new JsFunction.Member<JsAttr>   (Members.getAttributeNodeNS    );
4521             /**
4522              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4523              * without a qualifying member and to access the property of the name on an object.</p>
4524              * @since 1.0
4525              * @see JsElement#getElementsByTagName(String)
4526              * @see JsElement#getElementsByTagName(StringLike)
4527              * @javascript Re-compilers must resolve the member of this static field to the
4528              * identifier of the field name.
4529              */
4530             public static final JsFunction.Member<JsNodeList<? extends JsElement>> getElementsByTagName   = new JsFunction.Member<JsNodeList<? extends JsElement>>(Members.getElementsByTagName  );
4531             /**
4532              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4533              * without a qualifying member and to access the property of the name on an object.</p>
4534              * @since 1.0
4535              * @see JsElement#getElementsByTagNameNS(String, String)
4536              * @javascript Re-compilers must resolve the member of this static field to the
4537              * identifier of the field name.
4538              */
4539             public static final JsFunction.Member<JsNodeList<? extends JsElement>> getElementsByTagNameNS = new JsFunction.Member<JsNodeList<? extends JsElement>>(Members.getElementsByTagNameNS);
4540             /**
4541              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4542              * without a qualifying member and to access the property of the name on an object.</p>
4543              * @since 1.0
4544              * @see JsElement#hasAttribute(String)
4545              * @see JsElement#hasAttribute(StringLike)
4546              * @javascript Re-compilers must resolve the member of this static field to the
4547              * identifier of the field name.
4548              */
4549             public static final JsFunction.Member<java.lang.Boolean> hasAttribute           = new JsFunction.Member<java.lang.Boolean>(Members.hasAttribute          );
4550             /**
4551              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4552              * without a qualifying member and to access the property of the name on an object.</p>
4553              * @since 1.0
4554              * @see JsElement#hasAttributeNS(String, String)
4555              * @javascript Re-compilers must resolve the member of this static field to the
4556              * identifier of the field name.
4557              */
4558             public static final JsFunction.Member<java.lang.Boolean> hasAttributeNS         = new JsFunction.Member<java.lang.Boolean>(Members.hasAttributeNS        );
4559             /**
4560              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4561              * without a qualifying member and to access the property of the name on an object.</p>
4562              * @since 1.0
4563              * @see JsElement#removeAttribute(String)
4564              * @see JsElement#removeAttribute(StringLike)
4565              * @javascript Re-compilers must resolve the member of this static field to the
4566              * identifier of the field name.
4567              */
4568             public static final JsFunction.Member<?>         removeAttribute        = new JsFunction.Member<java.lang.Object>    (Members.removeAttribute       );
4569             /**
4570              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4571              * without a qualifying member and to access the property of the name on an object.</p>
4572              * @since 1.0
4573              * @see JsElement#removeAttributeNode(JsAttr)
4574              * @javascript Re-compilers must resolve the member of this static field to the
4575              * identifier of the field name.
4576              */
4577             public static final JsFunction.Member<JsAttr>    removeAttributeNode    = new JsFunction.Member<JsAttr>   (Members.removeAttributeNode   );
4578             /**
4579              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4580              * without a qualifying member and to access the property of the name on an object.</p>
4581              * @since 1.0
4582              * @see JsElement#removeAttributeNS(String, String)
4583              * @javascript Re-compilers must resolve the member of this static field to the
4584              * identifier of the field name.
4585              */
4586             public static final JsFunction.Member<?>         removeAttributeNS      = new JsFunction.Member<java.lang.Object>    (Members.removeAttributeNS     );
4587             /**
4588              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4589              * without a qualifying member and to access the property of the name on an object.</p>
4590              * @since 1.0
4591              * @see JsElement#removeEventListener(String, JsFunction, Boolean)
4592              * @javascript Re-compilers must resolve the member of this static field to the
4593              * identifier of the field name.
4594              */
4595             public static final JsFunction.Member<?>         removeEventListener    = new JsFunction.Member<java.lang.Object>    (Members.removeEventListener   );
4596             /**
4597              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4598              * without a qualifying member and to access the property of the name on an object.</p>
4599              * @since 1.0
4600              * @see JsElement#setAttribute(String, Object)
4601              * @javascript Re-compilers must resolve the member of this static field to the
4602              * identifier of the field name.
4603              */
4604             public static final JsFunction.Member<?>         setAttribute           = new JsFunction.Member<java.lang.Object>    (Members.setAttribute          );
4605             /**
4606              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4607              * without a qualifying member and to access the property of the name on an object.</p>
4608              * @since 1.0
4609              * @see JsElement#setAttributeNode(JsAttr)
4610              * @javascript Re-compilers must resolve the member of this static field to the
4611              * identifier of the field name.
4612              */
4613             public static final JsFunction.Member<JsAttr>    setAttributeNode       = new JsFunction.Member<JsAttr>   (Members.setAttributeNode      );
4614             /**
4615              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4616              * without a qualifying member and to access the property of the name on an object.</p>
4617              * @since 1.0
4618              * @see JsElement#setAttributeNodeNS(JsAttr)
4619              * @javascript Re-compilers must resolve the member of this static field to the
4620              * identifier of the field name.
4621              */
4622             public static final JsFunction.Member<JsAttr>    setAttributeNodeNS     = new JsFunction.Member<JsAttr>   (Members.setAttributeNodeNS    );
4623             /**
4624              * <p>An <b>opaque</b> static field defining a member that is named by the field name
4625              * without a qualifying member and to access the property of the name on an object.</p>
4626              * @since 1.0
4627              * @see JsElement#setAttributeNS(String, String, String)
4628              * @javascript Re-compilers must resolve the member of this static field to the
4629              * identifier of the field name.
4630              */
4631             public static final JsFunction.Member<?>         setAttributeNS         = new JsFunction.Member<java.lang.Object>    (Members.setAttributeNS        );
4632         }
4633     }
4634 
4635     /**
4636      * <p>An <b>opaque</b> class representing the global <tt>Node</tt> class of JavaScript.</p>
4637      *
4638      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
4639      * 
4640      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
4641      * generated into the target codes. Re-compilers must exit with error on the operations of
4642      * accessing that kind of class objects.
4643      * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
4644      * and <tt>instanceof</tt> to it always <tt>true</tt>.
4645      */
4646     public class Node extends JsClass
4647     {
4648         /**
4649          * <p>An <b>internal</b> class containing membership data for its enclosing
4650          * opaque class.</p>
4651          * <p>This class is only used inside of <b>opaque</b> or <b>internal</b> classes or
4652          * class members.</p>
4653          *
4654          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
4655          * 
4656          * @javascript Re-compilers must report error on resolving an <b>internal</b> class.
4657          */
4658         protected static abstract class Members extends JsClass.Members
4659         {
4660             /**
4661              * <p>An <b>internal</b> static field defining a member ID of the field name and
4662              * used internally to define a member of the same name.</p>
4663              * @since 1.0
4664              * @see DOM2Core.Node#ELEMENT_NODE
4665              * @see DOM2Core.Node.Member#ELEMENT_NODE
4666              * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4667              */
4668             public final static Mid ELEMENT_NODE                = id("ELEMENT_NODE"               );
4669             /**
4670              * <p>An <b>internal</b> static field defining a member ID of the field name and
4671              * used internally to define a member of the same name.</p>
4672              * @since 1.0
4673              * @see DOM2Core.Node#ATTRIBUTE_NODE
4674              * @see DOM2Core.Node.Member#ATTRIBUTE_NODE
4675              * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4676              */
4677             public final static Mid ATTRIBUTE_NODE              = id("ATTRIBUTE_NODE"             );
4678             /**
4679              * <p>An <b>internal</b> static field defining a member ID of the field name and
4680              * used internally to define a member of the same name.</p>
4681              * @since 1.0
4682              * @see DOM2Core.Node#TEXT_NODE
4683              * @see DOM2Core.Node.Member#TEXT_NODE
4684              * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4685              */
4686             public final static Mid TEXT_NODE                   = id("TEXT_NODE"                  );
4687             /**
4688              * <p>An <b>internal</b> static field defining a member ID of the field name and
4689              * used internally to define a member of the same name.</p>
4690              * @since 1.0
4691              * @see DOM2Core.Node#CDATA_SECTION_NODE
4692              * @see DOM2Core.Node.Member#CDATA_SECTION_NODE
4693              * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4694              */
4695             public final static Mid CDATA_SECTION_NODE          = id("CDATA_SECTION_NODE"         );
4696             /**
4697              * <p>An <b>internal</b> static field defining a member ID of the field name and
4698              * used internally to define a member of the same name.</p>
4699              * @since 1.0
4700              * @see DOM2Core.Node#PROCESSING_INSTRUCTION_NODE
4701              * @see DOM2Core.Node.Member#PROCESSING_INSTRUCTION_NODE
4702              * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4703              */
4704             public final static Mid PROCESSING_INSTRUCTION_NODE = id("PROCESSING_INSTRUCTION_NODE");
4705             /**
4706              * <p>An <b>internal</b> static field defining a member ID of the field name and
4707              * used internally to define a member of the same name.</p>
4708              * @since 1.0
4709              * @see DOM2Core.Node#COMMENT_NODE
4710              * @see DOM2Core.Node.Member#COMMENT_NODE
4711              * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4712              */
4713             public final static Mid COMMENT_NODE                = id("COMMENT_NODE"               );
4714             /**
4715              * <p>An <b>internal</b> static field defining a member ID of the field name and
4716              * used internally to define a member of the same name.</p>
4717              * @since 1.0
4718              * @see DOM2Core.Node#DOCUMENT_NODE
4719              * @see DOM2Core.Node.Member#DOCUMENT_NODE
4720              * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4721              */
4722             public final static Mid DOCUMENT_NODE               = id("DOCUMENT_NODE"              );
4723             /**
4724              * <p>An <b>internal</b> static field defining a member ID of the field name and
4725              * used internally to define a member of the same name.</p>
4726              * @since 1.0
4727              * @see DOM2Core.Node#DOCUMENT_TYPE_NODE
4728              * @see DOM2Core.Node.Member#DOCUMENT_TYPE_NODE
4729              * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4730              */
4731             public final static Mid DOCUMENT_TYPE_NODE          = id("DOCUMENT_TYPE_NODE"         );
4732             /**
4733              * <p>An <b>internal</b> static field defining a member ID of the field name and
4734              * used internally to define a member of the same name.</p>
4735              * @since 1.0
4736              * @see DOM2Core.Node#DOCUMENT_FRAGMENT_NODE
4737              * @see DOM2Core.Node.Member#DOCUMENT_FRAGMENT_NODE
4738              * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
4739              */
4740             public final static Mid DOCUMENT_FRAGMENT_NODE      = id("DOCUMENT_FRAGMENT_NODE"     );
4741         }
4742 
4743         /**
4744          * <p>An <b>opaque</b> static field defining a member that is named by the field name
4745          * without a qualifying member and to access the property of the name on an object.</p>
4746          * @since 1.0
4747          * @javascript Re-compilers must resolve the member of this static field to the
4748          * identifier of the field name.
4749          */
4750         public static final Value.Number.Member ELEMENT_NODE                = new Value.Number.Member(Members.ELEMENT_NODE               );
4751         /**
4752          * <p>An <b>opaque</b> static field defining a member that is named by the field name
4753          * without a qualifying member and to access the property of the name on an object.</p>
4754          * @since 1.0
4755          * @javascript Re-compilers must resolve the member of this static field to the
4756          * identifier of the field name.
4757          */
4758         public static final Value.Number.Member ATTRIBUTE_NODE              = new Value.Number.Member(Members.ATTRIBUTE_NODE             );
4759         /**
4760          * <p>An <b>opaque</b> static field defining a member that is named by the field name
4761          * without a qualifying member and to access the property of the name on an object.</p>
4762          * @since 1.0
4763          * @javascript Re-compilers must resolve the member of this static field to the
4764          * identifier of the field name.
4765          */
4766         public static final Value.Number.Member TEXT_NODE                   = new Value.Number.Member(Members.TEXT_NODE                  );
4767         /**
4768          * <p>An <b>opaque</b> static field defining a member that is named by the field name
4769          * without a qualifying member and to access the property of the name on an object.</p>
4770          * @since 1.0
4771          * @javascript Re-compilers must resolve the member of this static field to the
4772          * identifier of the field name.
4773          */
4774         public static final Value.Number.Member CDATA_SECTION_NODE          = new Value.Number.Member(Members.CDATA_SECTION_NODE         );
4775         /**
4776          * <p>An <b>opaque</b> static field defining a member that is named by the field name
4777          * without a qualifying member and to access the property of the name on an object.</p>
4778          * @since 1.0
4779          * @javascript Re-compilers must resolve the member of this static field to the
4780          * identifier of the field name.
4781          */
4782         public static final Value.Number.Member PROCESSING_INSTRUCTION_NODE = new Value.Number.Member(Members.PROCESSING_INSTRUCTION_NODE);
4783         /**
4784          * <p>An <b>opaque</b> static field defining a member that is named by the field name
4785          * without a qualifying member and to access the property of the name on an object.</p>
4786          * @since 1.0
4787          * @javascript Re-compilers must resolve the member of this static field to the
4788          * identifier of the field name.
4789          */
4790         public static final Value.Number.Member COMMENT_NODE                = new Value.Number.Member(Members.COMMENT_NODE               );
4791         /**
4792          * <p>An <b>opaque</b> static field defining a member that is named by the field name
4793          * without a qualifying member and to access the property of the name on an object.</p>
4794          * @since 1.0
4795          * @javascript Re-compilers must resolve the member of this static field to the
4796          * identifier of the field name.
4797          */
4798         public static final Value.Number.Member DOCUMENT_NODE               = new Value.Number.Member(Members.DOCUMENT_NODE              );
4799         /**
4800          * <p>An <b>opaque</b> static field defining a member that is named by the field name
4801          * without a qualifying member and to access the property of the name on an object.</p>
4802          * @since 1.0
4803          * @javascript Re-compilers must resolve the member of this static field to the
4804          * identifier of the field name.
4805          */
4806         public static final Value.Number.Member DOCUMENT_TYPE_NODE          = new Value.Number.Member(Members.DOCUMENT_TYPE_NODE         );
4807         /**
4808          * <p>An <b>opaque</b> static field defining a member that is named by the field name
4809          * without a qualifying member and to access the property of the name on an object.</p>
4810          * @since 1.0
4811          * @javascript Re-compilers must resolve the member of this static field to the
4812          * identifier of the field name.
4813          */
4814         public static final Value.Number.Member DOCUMENT_FRAGMENT_NODE      = new Value.Number.Member(Members.DOCUMENT_FRAGMENT_NODE     );
4815 
4816         /**
4817          * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
4818          * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
4819          * This class and the subclasses of this class are used to declare either <b>opaque</b> 
4820          * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
4821          * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
4822          * constructors are used to define the fields inside <b>opaque</b> classes. Under 
4823          * either circumstance, the field names must be exactly same as the member names, as 
4824          * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
4825          * based on the field names.</p>
4826          *
4827          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
4828          * 
4829          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
4830          * in the target codes. Re-compilers must exit with error on operations accessing that kind 
4831          * of class objects.
4832          * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
4833          * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
4834          * <pre>q.m</pre>
4835          * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
4836          * resolved from the instance of the enclosing member. Re-compilers must resolve an 
4837          * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
4838          * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
4839          * <pre>m</pre>
4840          * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
4841          * error on the access to <b>opaque</b> fields declared by this class under any other 
4842          * circumstances.
4843          */
4844         public static class Member extends JsClass.Member
4845         {
4846             public Member(JsObject.Member q, Mid mid) {
4847                 super(q, mid);
4848             }
4849             public Member(Mid mid) {
4850                 super(mid);
4851             }
4852             @Override
4853             /**
4854              * <p>Evaluates the property, represented by the current member instance, of the
4855              * argument object.</p>
4856              * @param o The argument object
4857              * @return The value of the current member based on the object argument.
4858              * @since 1.0
4859              * @javascript Re-compilers must convert the instance invocation of this method into
4860              * the JavaScript expression: 
4861              * <pre>o.m</pre>
4862              * where <tt>m</tt> is the identifier name resolved from the current member
4863              * instance of the invocation.
4864              */
4865             public Node with(ObjectLike o) {
4866                 return new Node(super.with(o));
4867             }
4868             @Override
4869             /**
4870              * <p>Evaluates a property, represented by the current member instance, of the
4871              * JavaScript global object, that is, evaluates the member to a global identifier.</p>
4872              * @return The value of the current member based on the JavaScript global object.
4873              * @since 1.0
4874              * @javascript Re-compilers must convert the instance invocation of this method into
4875              * the JavaScript expression: 
4876              * <pre>m</pre>
4877              * where <tt>m</tt> is the identifier name resolved from the current member
4878              * instance of the invocation.
4879              */
4880             public Node with() {
4881                 return with(Js.win());
4882             }
4883 
4884             /**
4885              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4886              * name of this field, qualified by the current member instance of the field, and 
4887              * to access the property of the name on an object.</p>
4888              * @since 1.0
4889              * @javascript Re-compilers must resolve the member of this instance field to the
4890              * identifier of the field name appending to the identifier resolved from its 
4891              * qualifying member with a dot in between.
4892              */
4893             public final Value.Number.Member ELEMENT_NODE                = new Value.Number.Member(this, Members.ELEMENT_NODE               );
4894             /**
4895              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4896              * name of this field, qualified by the current member instance of the field, and 
4897              * to access the property of the name on an object.</p>
4898              * @since 1.0
4899              * @javascript Re-compilers must resolve the member of this instance field to the
4900              * identifier of the field name appending to the identifier resolved from its 
4901              * qualifying member with a dot in between.
4902              */
4903             public final Value.Number.Member ATTRIBUTE_NODE              = new Value.Number.Member(this, Members.ATTRIBUTE_NODE             );
4904             /**
4905              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4906              * name of this field, qualified by the current member instance of the field, and 
4907              * to access the property of the name on an object.</p>
4908              * @since 1.0
4909              * @javascript Re-compilers must resolve the member of this instance field to the
4910              * identifier of the field name appending to the identifier resolved from its 
4911              * qualifying member with a dot in between.
4912              */
4913             public final Value.Number.Member TEXT_NODE                   = new Value.Number.Member(this, Members.TEXT_NODE                  );
4914             /**
4915              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4916              * name of this field, qualified by the current member instance of the field, and 
4917              * to access the property of the name on an object.</p>
4918              * @since 1.0
4919              * @javascript Re-compilers must resolve the member of this instance field to the
4920              * identifier of the field name appending to the identifier resolved from its 
4921              * qualifying member with a dot in between.
4922              */
4923             public final Value.Number.Member CDATA_SECTION_NODE          = new Value.Number.Member(this, Members.CDATA_SECTION_NODE         );
4924             /**
4925              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4926              * name of this field, qualified by the current member instance of the field, and 
4927              * to access the property of the name on an object.</p>
4928              * @since 1.0
4929              * @javascript Re-compilers must resolve the member of this instance field to the
4930              * identifier of the field name appending to the identifier resolved from its 
4931              * qualifying member with a dot in between.
4932              */
4933             public final Value.Number.Member PROCESSING_INSTRUCTION_NODE = new Value.Number.Member(this, Members.PROCESSING_INSTRUCTION_NODE);
4934             /**
4935              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4936              * name of this field, qualified by the current member instance of the field, and 
4937              * to access the property of the name on an object.</p>
4938              * @since 1.0
4939              * @javascript Re-compilers must resolve the member of this instance field to the
4940              * identifier of the field name appending to the identifier resolved from its 
4941              * qualifying member with a dot in between.
4942              */
4943             public final Value.Number.Member COMMENT_NODE                = new Value.Number.Member(this, Members.COMMENT_NODE               );
4944             /**
4945              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4946              * name of this field, qualified by the current member instance of the field, and 
4947              * to access the property of the name on an object.</p>
4948              * @since 1.0
4949              * @javascript Re-compilers must resolve the member of this instance field to the
4950              * identifier of the field name appending to the identifier resolved from its 
4951              * qualifying member with a dot in between.
4952              */
4953             public final Value.Number.Member DOCUMENT_NODE               = new Value.Number.Member(this, Members.DOCUMENT_NODE              );
4954             /**
4955              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4956              * name of this field, qualified by the current member instance of the field, and 
4957              * to access the property of the name on an object.</p>
4958              * @since 1.0
4959              * @javascript Re-compilers must resolve the member of this instance field to the
4960              * identifier of the field name appending to the identifier resolved from its 
4961              * qualifying member with a dot in between.
4962              */
4963             public final Value.Number.Member DOCUMENT_TYPE_NODE          = new Value.Number.Member(this, Members.DOCUMENT_TYPE_NODE         );
4964             /**
4965              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4966              * name of this field, qualified by the current member instance of the field, and 
4967              * to access the property of the name on an object.</p>
4968              * @since 1.0
4969              * @javascript Re-compilers must resolve the member of this instance field to the
4970              * identifier of the field name appending to the identifier resolved from its 
4971              * qualifying member with a dot in between.
4972              */
4973             public final Value.Number.Member DOCUMENT_FRAGMENT_NODE      = new Value.Number.Member(this, Members.DOCUMENT_FRAGMENT_NODE     );
4974 
4975             /**
4976              * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
4977              * name of this field, qualified by the current member instance of the field, and 
4978              * to access the property of the name on an object.</p>
4979              * @since 1.0
4980              * @javascript Re-compilers must resolve the member of this instance field to the
4981              * identifier of the field name appending to the identifier resolved from its 
4982              * qualifying member with a dot in between.
4983              */
4984             public final Prototype.Member prototype = new Prototype.Member(this, Members.prototype);
4985         }
4986 
4987         /**
4988          * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
4989          * with the wrapping constructor.</p>
4990          * @param var The argument of an <b>opaque</b> object.
4991          * @since 1.0
4992          * @javascript Re-compilers must ignore the construction operation of this constructor,
4993          * that is, replacing it with its only argument.
4994          */
4995         public Node(JsObject var) {
4996             super(var(var, (JsFunction<?>)null));
4997         }
4998 
4999         /**
5000          * <p>An <b>opaque</b> static field defining a member that is named by the field name
5001          * without a qualifying member and to access the property of the name on an object.</p>
5002          * @since 1.0
5003          * @javascript Re-compilers must resolve the member of this static field to the
5004          * identifier of the field name.
5005          */
5006         public static final Prototype.Member prototype = new Prototype.Member(Members.prototype);
5007 
5008         /**
5009          * <p>An <b>opaque</b> class representing the prototype of the enclosing global
5010          * class of JavaScript.</p>
5011          *
5012          * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
5013          * 
5014          * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
5015          * generated into the target codes. Re-compilers must exit with error on the operations of
5016          * accessing that kind of class objects.
5017          * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
5018          * and <tt>instanceof</tt> to it always <tt>true</tt>.
5019          */
5020         public static class Prototype extends JsObject
5021         {
5022             /**
5023              * <p>An <b>internal</b> class containing membership data for its enclosing
5024              * opaque class.</p>
5025              * <p>This class is only used inside of <b>opaque</b> or <b>internal</b> classes or
5026              * class members.</p>
5027              *
5028              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
5029              * 
5030              * @javascript Re-compilers must report error on resolving an <b>internal</b> class.
5031              */
5032             protected static abstract class Members extends JsObject.Members
5033             {
5034                 /**
5035                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5036                  * used internally to define a member of the same name.</p>
5037                  * @since 1.0
5038                  * @see DOM2Core.Node.Prototype#appendChild
5039                  * @see DOM2Core.Node.Prototype.Member#appendChild
5040                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5041                  */
5042                 public final static Mid appendChild             = id("appendChild"            );
5043                 /**
5044                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5045                  * used internally to define a member of the same name.</p>
5046                  * @since 1.0
5047                  * @see DOM2Core.Node.Prototype#cloneNode
5048                  * @see DOM2Core.Node.Prototype.Member#cloneNode
5049                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5050                  */
5051                 public final static Mid cloneNode               = id("cloneNode"              );
5052                 /**
5053                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5054                  * used internally to define a member of the same name.</p>
5055                  * @since 1.0
5056                  * @see DOM2Core.Node.Prototype#hasAttributes
5057                  * @see DOM2Core.Node.Prototype.Member#hasAttributes
5058                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5059                  */
5060                 public final static Mid hasAttributes           = id("hasAttributes"          );
5061                 /**
5062                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5063                  * used internally to define a member of the same name.</p>
5064                  * @since 1.0
5065                  * @see DOM2Core.Node.Prototype#hasChildNodes
5066                  * @see DOM2Core.Node.Prototype.Member#hasChildNodes
5067                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5068                  */
5069                 public final static Mid hasChildNodes           = id("hasChildNodes"          );
5070                 /**
5071                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5072                  * used internally to define a member of the same name.</p>
5073                  * @since 1.0
5074                  * @see DOM2Core.Node.Prototype#insertAdjacentElement
5075                  * @see DOM2Core.Node.Prototype.Member#insertAdjacentElement
5076                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5077                  */
5078                 public final static Mid insertAdjacentElement   = id("insertAdjacentElement"  );
5079                 /**
5080                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5081                  * used internally to define a member of the same name.</p>
5082                  * @since 1.0
5083                  * @see DOM2Core.Node.Prototype#insertAdjacentHTML
5084                  * @see DOM2Core.Node.Prototype.Member#insertAdjacentHTML
5085                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5086                  */
5087                 public final static Mid insertAdjacentHTML      = id("insertAdjacentHTML"     );
5088                 /**
5089                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5090                  * used internally to define a member of the same name.</p>
5091                  * @since 1.0
5092                  * @see DOM2Core.Node.Prototype#insertAdjacentText
5093                  * @see DOM2Core.Node.Prototype.Member#insertAdjacentText
5094                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5095                  */
5096                 public final static Mid insertAdjacentText      = id("insertAdjacentText"     );
5097                 /**
5098                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5099                  * used internally to define a member of the same name.</p>
5100                  * @since 1.0
5101                  * @see DOM2Core.Node.Prototype#insertBefore
5102                  * @see DOM2Core.Node.Prototype.Member#insertBefore
5103                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5104                  */
5105                 public final static Mid insertBefore            = id("insertBefore"           );
5106                 /**
5107                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5108                  * used internally to define a member of the same name.</p>
5109                  * @since 1.0
5110                  * @see DOM2Core.Node.Prototype#isSupported
5111                  * @see DOM2Core.Node.Prototype.Member#isSupported
5112                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5113                  */
5114                 public final static Mid isSupported             = id("isSupported"            );
5115                 /**
5116                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5117                  * used internally to define a member of the same name.</p>
5118                  * @since 1.0
5119                  * @see DOM2Core.Node.Prototype#normalize
5120                  * @see DOM2Core.Node.Prototype.Member#normalize
5121                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5122                  */
5123                 public final static Mid normalize               = id("normalize"              );
5124                 /**
5125                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5126                  * used internally to define a member of the same name.</p>
5127                  * @since 1.0
5128                  * @see DOM2Core.Node.Prototype#releaseCapture
5129                  * @see DOM2Core.Node.Prototype.Member#releaseCapture
5130                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5131                  */
5132                 public final static Mid releaseCapture          = id("releaseCapture"         );
5133                 /**
5134                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5135                  * used internally to define a member of the same name.</p>
5136                  * @since 1.0
5137                  * @see DOM2Core.Node.Prototype#removeChild
5138                  * @see DOM2Core.Node.Prototype.Member#removeChild
5139                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5140                  */
5141                 public final static Mid removeChild             = id("removeChild"            );
5142                 /**
5143                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5144                  * used internally to define a member of the same name.</p>
5145                  * @since 1.0
5146                  * @see DOM2Core.Node.Prototype#replaceChild
5147                  * @see DOM2Core.Node.Prototype.Member#replaceChild
5148                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5149                  */
5150                 public final static Mid replaceChild            = id("replaceChild"           );
5151                 /**
5152                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5153                  * used internally to define a member of the same name.</p>
5154                  * @since 1.0
5155                  * @see DOM2Core.Node.Prototype#selectNodes
5156                  * @see DOM2Core.Node.Prototype.Member#selectNodes
5157                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5158                  */
5159                 public final static Mid selectNodes             = id("selectNodes"            );
5160                 /**
5161                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5162                  * used internally to define a member of the same name.</p>
5163                  * @since 1.0
5164                  * @see DOM2Core.Node.Prototype#selectSingleNode
5165                  * @see DOM2Core.Node.Prototype.Member#selectSingleNode
5166                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5167                  */
5168                 public final static Mid selectSingleNode        = id("selectSingleNode"       );
5169                 /**
5170                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5171                  * used internally to define a member of the same name.</p>
5172                  * @since 1.0
5173                  * @see DOM2Core.Node.Prototype#setCapture
5174                  * @see DOM2Core.Node.Prototype.Member#setCapture
5175                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5176                  */
5177                 public final static Mid setCapture              = id("setCapture"             );
5178                 /**
5179                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5180                  * used internally to define a member of the same name.</p>
5181                  * @since 1.0
5182                  * @see DOM2Core.Node.Prototype#transformNode
5183                  * @see DOM2Core.Node.Prototype.Member#transformNode
5184                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5185                  */
5186                 public final static Mid transformNode           = id("transformNode"          );
5187                 /**
5188                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5189                  * used internally to define a member of the same name.</p>
5190                  * @since 1.0
5191                  * @see DOM2Core.Node.Prototype#transformNodeToObject
5192                  * @see DOM2Core.Node.Prototype.Member#transformNodeToObject
5193                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5194                  */
5195                 public final static Mid transformNodeToObject   = id("transformNodeToObject"  );
5196                 /**
5197                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5198                  * used internally to define a member of the same name.</p>
5199                  * @since 1.0
5200                  * @see DOM2Core.Node.Prototype#contains
5201                  * @see DOM2Core.Node.Prototype.Member#contains
5202                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5203                  */
5204                 public final static Mid contains                = id("contains"               );
5205                 /**
5206                  * <p>An <b>internal</b> static field defining a member ID of the field name and
5207                  * used internally to define a member of the same name.</p>
5208                  * @since 1.0
5209                  * @see DOM2Core.Node.Prototype#compareDocumentPosition
5210                  * @see DOM2Core.Node.Prototype.Member#compareDocumentPosition
5211                  * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
5212                  */
5213                 public final static Mid compareDocumentPosition = id("compareDocumentPosition");
5214             }
5215             /**
5216              * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
5217              * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
5218              * This class and the subclasses of this class are used to declare either <b>opaque</b> 
5219              * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
5220              * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
5221              * constructors are used to define the fields inside <b>opaque</b> classes. Under 
5222              * either circumstance, the field names must be exactly same as the member names, as 
5223              * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
5224              * based on the field names.</p>
5225              *
5226              * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
5227              * 
5228              * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
5229              * in the target codes. Re-compilers must exit with error on operations accessing that kind 
5230              * of class objects.
5231              * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
5232              * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
5233              * <pre>q.m</pre>
5234              * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
5235              * resolved from the instance of the enclosing member. Re-compilers must resolve an 
5236              * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
5237              * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
5238              * <pre>m</pre>
5239              * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
5240              * error on the access to <b>opaque</b> fields declared by this class under any other 
5241              * circumstances.
5242              */
5243             public static class Member extends JsObject.Member
5244             {
5245                 /**
5246                  * <p>Internally constructs a member based on a qualifying member.</p>
5247                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
5248                  * or <b>internal</b> classes or class members.</p>
5249                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
5250                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
5251                  * declared in the declaring class of this constructor itself or its subclasses. 
5252                  * Under this circumstance, the field names must be exactly same as the member 
5253                  * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
5254                  * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
5255                  * to their names appending to the name resolved from the specified qualifying 
5256                  * member with a dot in between.</p>
5257                  * @param q A qualifying member
5258                  * @param mid The ID of the member to construct
5259                  * @since 1.0
5260                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
5261                  */
5262                 public Member(JsObject.Member q, Mid mid) {
5263                     super(q, mid);
5264                 }
5265                 /**
5266                  * <p>Internally constructs a member without a qualifying member.</p>
5267                  * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
5268                  * or <b>internal</b> classes or class members.</p>
5269                  * <p>Note that, this constructor is <b>internal</b> but its declaring class is
5270                  * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
5271                  * declared in <b>opaque</b> types other than the declaring class of this constructor 
5272                  * itself and its subclasses. Under this circumstance, the field names must be
5273                  * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
5274                  * types are generally resolved by re-compilers directly to identifiers of their names.</p>
5275                  * @param mid The ID of the member to construct
5276                  * @since 1.0
5277                  * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
5278                  */
5279                 public Member(Mid mid) {
5280                     super(mid);
5281                 }
5282                 @Override
5283                 /**
5284                  * <p>Evaluates the property, represented by the current member instance, of the
5285                  * argument object.</p>
5286                  * @param o The argument object
5287                  * @return The value of the current member based on the object argument.
5288                  * @since 1.0
5289                  * @javascript Re-compilers must convert the instance invocation of this method into
5290                  * the JavaScript expression: 
5291                  * <pre>o.m</pre>
5292                  * where <tt>m</tt> is the identifier name resolved from the current member
5293                  * instance of the invocation.
5294                  */
5295                 public Prototype with(ObjectLike o) {
5296                     return new Prototype(super.with(o));
5297                 }
5298 
5299                 /**
5300                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
5301                  * name of this field, qualified by the current member instance of the field, and 
5302                  * to access the property of the name on an object.</p>
5303                  * @since 1.0
5304                  * @see JsNode#valueOf()
5305                  * @javascript Re-compilers must resolve the member of this instance field to the
5306                  * identifier of the field name appending to the identifier resolved from its 
5307                  * qualifying member with a dot in between.
5308                  */
5309                 public final JsFunction.Member<JsNode> valueOf = new JsFunction.Member<JsNode>(this, Members.valueOf, Generic.get(JsNode.class));
5310                 /**
5311                  * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
5312                  * name of this field, qualified by the current member instance of the field, and 
5313                  * to access the property of the name on an object.</p>
5314                  * @since 1.0
5315                  * @see JsNode#appendChild(JsNode)
5316                  * @javascript Re-compilers must resolve the member of this instance field to the
5317                  * identifier of the field name appendi