}
		Expansion(String text, int softTabSize, Vector pp)		{			StringBuffer buf = new StringBuffer();			boolean backslash = false;			for(int i = 0; i < text.length(); i++)			{				char ch = text.charAt(i);				if(backslash)				{					backslash = false;					if(ch == '|')						caretPosition = buf.length();					else if(ch == 'n')					{						buf.append('\n');						lineCount++;					}					else if(ch == 't')					{						if(softTabSize == 0)							buf.append('\t');						else						{							for(int j = 0; j < softTabSize; j++)								buf.append(' ');						}					}					else						buf.append(ch);				}				else if(ch == '\\')					backslash = true;				else if(ch == '$')				{					if(i != text.length() - 1)					{						ch = text.charAt(++i);						if(Character.isDigit(ch) && ch != '0')						{							int pos = ch - '0';							if(pos < pp.size())								buf.append(pp.elementAt(pos));							else							{								// so the user knows								// a positional is								// expected								buf.append('$');								buf.append(ch);							}						}						else							buf.append(ch);					}				}				else					buf.append(ch);			}			this.text = buf.toString();		}