private void MarkPermanentVariables()
{
int nPermVars = 0;
int goalN = 0;
int index = 0;
for(nPermVars = (_items.Count - _temporaryVariableCount), goalN = _goalCount - 1, index = 0;
nPermVars > 0;
goalN--)
{
foreach(PrologVariableDictionaryEntry entry in _items)
{
if(!entry.IsTemporary && entry.LastGoal == goalN)
{
entry.PermanentIndex = index++;
nPermVars--;
}
}
}
}