public void printTag(String name, HashMap parameters, boolean insertTab, boolean insertNewLine, boolean closeTag) {
		if (insertTab) {
			this.printTabulation();
		}
		this.print('<');
		this.print(name);
		if (parameters != null) {
			int length = parameters.size();
			Map.Entry[] entries = new Map.Entry[length];
			parameters.entrySet().toArray(entries);
			Arrays.sort(entries, new Comparator() {
				public int compare(Object o1, Object o2) {
					Map.Entry entry1 = (Map.Entry) o1;
					Map.Entry entry2 = (Map.Entry) o2;
					return ((String) entry1.getKey()).compareTo((String) entry2.getKey());
				}
			});
			for (int i = 0; i < length; i++) {
				this.print(' ');
				this.print(entries[i].getKey());
				this.print("=\""); //$NON-NLS-1$
				this.print(getEscaped(String.valueOf(entries[i].getValue())));
				this.print('\"');
			}
		}
		if (closeTag) {
			this.print("/>"); //$NON-NLS-1$
		} else {
			this.print(">"); //$NON-NLS-1$
		}
		if (insertNewLine) {
			print(this.lineSeparator);
		}
		if (parameters != null && !closeTag)
			this.tab++;

	}