sclass TokenRangeWithSrc extends TokenRange { LS tok; *(LS tok, int *start) { end = start; } *(LS tok, int *start, int *end) {} ListAndIndex startPtr() { ret ListAndIndex(tok, start); } ListAndIndex endPtr() { ret ListAndIndex(tok, end); } LineAndColumn startLineAndCol() { ret tokenToLineAndColumn(startPtr()); } LineAndColumn endLineAndCol() { ret tokenToLineAndColumn(endPtr()); } toString { var start = startLineAndCol(); if (eq(start, end)) ret str(start); ret start + " to " + endLineAndCol(); } }