public int getStartVariance()	{
		if (this.variance > 0)
			return this.variance;
			
		if (getStartCharacter() != null)
			return this.variance = 1;

		int variance;
		Object o = sequence.get(0);
		if (o instanceof Consumer)
			variance = ((Consumer)o).getStartVariance();
		else
		if (o instanceof CharacterSet)
			variance = ((CharacterSet)o).getVariance();
		else
			throw new IllegalStateException("No fixed start character, no character set, where am i?");
			
		for (int i = 0; constraints != null && i < constraints.size(); i++)
			variance -= ((Consumer) constraints.get(i)).getStartVariance();
			
		return this.variance = variance;
	}