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