public virtual void Bind(AbstractTerm term)
{
AbstractTerm t1 = this;
AbstractTerm t2 = term;
AMTrail trail = AMTrail.Instance;
// if t1 is a reference
// and
// (t2 is not a reference) or address2 < address1
if (t1.IsReference && !t2.IsReference)
{
Assign(t2);
trail.Trail(t1);
}
else
{
t2.Assign(t1);
trail.Trail(t2);
}
}