diff --git a/lib/src/highlighter.dart b/lib/src/highlighter.dart
index bc0fe69..a709d24 100644
--- a/lib/src/highlighter.dart
+++ b/lib/src/highlighter.dart
@@ -44,6 +44,16 @@
   /// alignment.
   static const _spacesPerTab = 4;
 
+  /// Creats a [Highlighter] that will return a message associated with [span]
+  /// when [write] is called.
+  ///
+  /// [color] may either be a [String], a [bool], or `null`. If it's a string,
+  /// it indicates an [ANSI terminal color
+  /// escape](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) that should
+  /// be used to highlight the span's text (for example, `"\u001b[31m"` will
+  /// color red). If it's `true`, it indicates that the text should be
+  /// highlighted using the default color. If it's `false` or `null`, it
+  /// indicates that the text shouldn't be highlighted.
   factory Highlighter(SourceSpan span, {color}) {
     if (color == true) color = colors.RED;
     if (color == false) color = null;
@@ -114,8 +124,6 @@
   ///
   /// This method should only be called once.
   String highlight() {
-    //if (_span.length == 0 && _span.context.isEmpty) return "";
-
     _writeSidebar(end: glyph.downEnd);
     _buffer.writeln();
 
@@ -123,7 +131,7 @@
     // those first.
     var lineStart =
         findLineStart(_span.context, _span.text, _span.start.column);
-    assert(lineStart != null); // enfoced by [new Highlighter]
+    assert(lineStart != null); // enforced by [new Highlighter]
 
     var context = _span.context;
     if (lineStart > 0) {
@@ -150,12 +158,13 @@
     if (lines.last.isEmpty && lines.length > 1) lines.removeLast();
 
     _writeFirstLine(lines.first);
+    var lastLineIndex = _span.end.line - _span.start.line;
     if (_multiline) {
       _writeIntermediateLines(
-          lines.skip(1).take(_span.end.line - _span.start.line - 1));
-      _writeLastLine(lines[_span.end.line - _span.start.line]);
+          lines.skip(1).take(lastLineIndex - 1));
+      _writeLastLine(lines[lastLineIndex]);
     }
-    _writeTrailingLines(lines.skip(1 + _span.end.line - _span.start.line));
+    _writeTrailingLines(lines.skip(lastLineIndex + 1));
 
     _writeSidebar(end: glyph.upEnd);
 
