boolean test (Instantiation inst)
	{
		if (prefix == '!')
		{
			if (model.getProcedural().whyNotTrace)
				model.output (toStringFirstLine (null));
			Vector<String> tokens = new Vector<String>();
			for (int i=0 ; i<specials.size() ; i++)
			{
				String special = specials.elementAt(i);
				if (Symbol.get(special).isVariable()) special = inst.get(Symbol.get(special)).getString();
				tokens.add (special);
			}
			try
			{
				return Utilities.evalComputeCondition(tokens.iterator());
			}
			catch (Exception e)
			{
				return model.getTask().evalCondition (tokens.iterator());
			}
		}
		else
		{
			Chunk bufferChunk = model.getBuffers().get (buffer);
			if (bufferChunk!=null && prefix=='=')
				inst.set (Symbol.get("="+buffer), bufferChunk.getName());
			if (model.getProcedural().whyNotTrace)
				model.output (toStringFirstLine (inst));
			if (bufferChunk == null) return false;
			return testBufferChunk (bufferChunk, inst);
		}
	}