public virtual AbstractTerm Dereference()
{
// in case we are wrapping a variable
if (IsAssigned())
{
return _containee.Dereference();
}
return this;
//if (_containee == null || _containee == this)
//{
// return this;
//}
//else
//{
// AbstractTerm reference = _containee;
// while (reference._containee != null)
// {
// _reference = _reference._containee;
// }
// return _reference;
//}
//return null;
}