This interface is the combination of two needs: 1) A Ruby interpreter position (for warnings and errors). The interpreter only cares about filename and endLine. 2) A IDE position (offsets for showing ranges of grammatical elements). The offsets represent positions 'between' characters. So a variable 'abc' has a startOffset of 0 and an endOffset of 3 ( 0a1b2c3 ).
Full article: http://jruby.org/apidocs/org/jruby/lexer/yacc/ISourcePosi...