--- a/lexlib/LexAccessor.h
+++ b/lexlib/LexAccessor.h
@@ -79,6 +79,12 @@
 		}
 		return buf[position - startPos];
 	}
+	IDocumentWithLineEnd *MultiByteAccess() const {
+		if (documentVersion >= dvLineEnd) {
+			return static_cast<IDocumentWithLineEnd *>(pAccess);
+		}
+		return 0;
+	}
 	/** Safe version of operator[], returning a defined value for invalid position. */
 	char SafeGetCharAt(int position, char chDefault=' ') {
 		if (position < startPos || position >= endPos) {
@@ -124,21 +130,6 @@
 				return startNext - 2;
 			else
 				return startNext - 1;
-		}
-	}
-	int GetRelativePosition(int start, int characterOffset, int *character, int *width) {
-		if (documentVersion >= dvLineEnd) {
-			return (static_cast<IDocumentWithLineEnd *>(pAccess))->GetRelativePosition(
-				start, characterOffset, character, width);
-		} else {
-			// Old version -> byte-oriented only
-			// Handle doc range overflow
-			int posNew = start + characterOffset;
-			if ((posNew < 0) || (posNew > Length()))
-				return -1;
-			*character = SafeGetCharAt(posNew, 0);
-			*width = 1;
-			return start + characterOffset;
 		}
 	}
 	int LevelAt(int line) const {