s.append("))");
s.append(")))");
	public String toString()	{		String retval = null;		DecimalFormat format;		StringBuffer s;		if (mType == STRING)			retval = mStringValue;		else if (mType == VARIABLE)			retval = mVarname;		else if (mType == NUMERIC)		{			double absValue = (mNumericValue >= 0) ? mNumericValue : -mNumericValue;			/*			 * Print large or small numbers in scientific notation			 * to give more significant digits.			 */							if (absValue != 0 && (absValue < 0.01 || absValue > 10000000.0))				format = new DecimalFormat("#.################E0");			else				format = new DecimalFormat("#.################");			retval = format.format(mNumericValue);		}		else if (mType == HASHMAP)		{			/*			 * Build string of all key, value pairs in the hash map.			 */			s = new StringBuffer();			Iterator it = mHashMap.keySet().iterator();			while (it.hasNext())			{				if (s.length() > 0)					s.append(' ');				String key = (String)it.next();				s.append(key);				s.append(' ');				Argument value = (Argument)mHashMap.get(key);				s.append(value.getStringValue());			}			retval = s.toString();		}		else if (mGeometryValue[0] == 0)		{			/*			 * Geometry is empty.			 */			retval = "NULL";		}		else if (mType == GEOMETRY_POINT)		{			/*			 * Convert point to OGC Well Known Text representation.			 */			retval = "POINT (" + mGeometryValue[2] + " " + mGeometryValue[3] + ")";		}		else if (mType == GEOMETRY_LINESTRING || mType == GEOMETRY_POLYGON ||			mType == GEOMETRY_MULTIPOINT)		{			/*			 * Convert line, polygon or series of points to			 * OGC Well Known Text representation.			 */			s = new StringBuffer();			if (mType == GEOMETRY_LINESTRING)				s.append("LINESTRING (");			else if (mType == GEOMETRY_POLYGON)				s.append("POLYGON ((");			else				s.append("MULTIPOINT (");			for (int i = 1; i < mGeometryValue[0]; i += 3)			{				if (i > 1)					s.append(", ");				s.append(mGeometryValue[i + 1]);				s.append(" ");				s.append(mGeometryValue[i + 2]);			}			if (mType == GEOMETRY_LINESTRING || mType == GEOMETRY_MULTIPOINT)				s.append(")");			else				s.append("))");			retval = s.toString();		}		else		{			/*			 * Convert multiple lines or polygons to			 * OGC Well Known Text representation.			 */			if (mType == GEOMETRY_MULTILINESTRING)				s = new StringBuffer("MULTILINESTRING (");			else				s = new StringBuffer("MULTIPOLYGON ((");			for (int i = 1; i < mGeometryValue[0]; i += 3)			{				if (mGeometryValue[i] == PathIterator.SEG_MOVETO)				{					if (i > 1)					{						if (mType == GEOMETRY_MULTILINESTRING)							s.append("), (");						else							s.append(")), ((");					}				}				else				{					s.append(", ");				}				s.append(mGeometryValue[i + 1]);				s.append(" ");				s.append(mGeometryValue[i + 2]);			}						if (mType == GEOMETRY_MULTILINESTRING)				s.append(")");			else				s.append("))");						retval = s.toString();		}		return(retval);	}