public int CompareTo(object obj)
{
// mainly used in sorting TokenList.Tokens (see Controller.TextChanged())
// will assume obj is always of type Token (as it should be)
var other = obj as Token;
if (Line > other.Line) return 1;
if (Line < other.Line) return -1;
if (Position > other.Position) return 1;
if (Position < other.Position) return -1;
return 0;
}