/******************************************************************************* * Copyright (c) 2007, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * Contributors: *     IBM Corporation - initial API and implementation ****************************************************************************** * **//**  * Object namespaces()  * @type namespaces  * @super Array  * @memberOf namespaces  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537470.aspx*/function namespaces(){};namespaces.prototype= new Array();/**  * Property length  * @type Number  * @returns {Number}  * @memberOf namespaces  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534101.aspx*/namespaces.prototype.length=0;/**  * Property TF-8"  * @type TF-8"  * @returns {TF-8"}  * @memberOf namespaces  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535932.aspx*/namespaces.prototype.TF-8"= new TF-8"();/**  * Property TF-8"  * @type TF-8"  * @returns {TF-8"}  * @memberOf namespaces  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535932.aspx*/namespaces.prototype.TF-8"= new TF-8"();/**  * Property TF-8"  * @type TF-8"  * @returns {TF-8"}  * @memberOf namespaces  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536464.aspx*/namespaces.prototype.TF-8"= new TF-8"();