case Statement.CLEAR: context.clearPath(); break;
	private void execute(Statement st, Context context)		throws MapyrusException, IOException	{		Expression []expr;		int nExpressions;		Argument []args = null;		expr = st.getExpressions();		nExpressions = expr.length;				/*		 * Evaluate each of the expressions for this statement.		 */		if (nExpressions > 0)		{			args = new Argument[nExpressions];			for (int i = 0; i < nExpressions; i++)			{				args[i] = expr[i].evaluate(context);			}		}		switch (st.getType())		{			case Statement.COLOR:				if (nExpressions == 1 && args[0].getType() == Argument.STRING)				{					/*					 * Find named color in color name database.					 */					Color c = ColorDatabase.getColor(args[0].getStringValue());					if (c == null)					{						throw new MapyrusException("Color not found: " +							args[0].getStringValue());					}					context.setColor(c); 				}				else if (nExpressions == 4 &&					args[0].getType() == Argument.STRING &&					args[1].getType() == Argument.NUMERIC &&					args[2].getType() == Argument.NUMERIC &&					args[3].getType() == Argument.NUMERIC)				{					String colorType = args[0].getStringValue();					float c1 = (float)args[1].getNumericValue();					float c2 = (float)args[2].getNumericValue();					float c3 = (float)args[3].getNumericValue();										if (colorType.equalsIgnoreCase("hsb"))					{						/*						 * Set HSB color.						 */						int rgb = Color.HSBtoRGB(c1, c2, c3);						context.setColor(new Color(rgb));					}					else if (colorType.equalsIgnoreCase("rgb"))					{								/*						 * Set RGB color.						 */						context.setColor(new Color(c1, c2, c3));					}					else					{						throw new MapyrusException("Unknown color type: " +							colorType);					}				}				break;			case Statement.LINEWIDTH:				if (nExpressions == 1 && args[0].getType() == Argument.NUMERIC)				{					/*					 * Set new line width.					 */					context.setLineWidth(args[0].getNumericValue());				}				else				{				}				break;			case Statement.MOVE:				if (nExpressions == 2 && args[0].getType() == Argument.NUMERIC &&					args[1].getType() == Argument.NUMERIC)				{					/*					 * Add point to path.					 */					context.moveTo(args[0].getNumericValue(),						args[1].getNumericValue());				}				break;							case Statement.DRAW:				if (nExpressions == 2 && args[0].getType() == Argument.NUMERIC &&					args[1].getType() == Argument.NUMERIC)				{					/*					 * Add point to path.					 */					context.lineTo(args[0].getNumericValue(),						args[1].getNumericValue());				}				break;							case Statement.STROKE:				context.stroke();				break;							case Statement.FILL:				context.fill();				break;							case Statement.SCALE:				if (nExpressions == 2 &&					args[0].getType() == Argument.NUMERIC &&					args[1].getType() == Argument.NUMERIC)				{					context.setScaling(args[0].getNumericValue(),						args[1].getNumericValue());				}				break;								case Statement.NEWPAGE:				if (nExpressions == 3 &&					args[0].getType() == Argument.STRING &&					args[1].getType() == Argument.NUMERIC &&					args[2].getType() == Argument.NUMERIC)				{					context.setOutputFormat(args[0].getStringValue(),						(int)args[1].getNumericValue(),						(int)args[2].getNumericValue(), "extras");				}				break;											case Statement.PRINT:				/*				 * Print to stdout each of the expressions passed.				 */				for (int i = 0; i <nExpressions; i++)				{					if (i > 0)					{						System.out.print(" ");					}					if (args[i].getType() == Argument.STRING)					{						System.out.print(args[i].getStringValue());					}					else					{						System.out.print(args[i].getNumericValue());					}				}				System.out.println("");				break;							case Statement.ASSIGN:				context.defineVariable(st.getAssignedVariable(), args[0]);				break;		}			}