| RubyLexer |   | 75% |   | 70% | 279 | 696 | 307 | 1,449 | 9 | 108 | 0 | 1 |
| KeywordMatch |  | 0% |  | 0% | 198 | 198 | 80 | 80 | 9 | 9 | 1 | 1 |
| StringTerm |   | 73% |   | 73% | 42 | 113 | 48 | 237 | 2 | 12 | 0 | 1 |
| InputStreamLexerSource |   | 66% |   | 64% | 22 | 61 | 41 | 124 | 3 | 22 | 0 | 1 |
| LexerSource |   | 58% |   | 40% | 20 | 39 | 29 | 80 | 3 | 16 | 0 | 1 |
| ByteArrayLexerSource |   | 83% |   | 71% | 20 | 56 | 16 | 83 | 1 | 16 | 0 | 1 |
| HeredocTerm |   | 71% |  | 74% | 9 | 18 | 10 | 46 | 2 | 4 | 0 | 1 |
| DetailedSourcePosition | | 0% | | n/a | 4 | 4 | 7 | 7 | 4 | 4 | 1 | 1 |
| ByteArrayLexerSource.PushbackCursor |  | 70% | | 50% | 2 | 7 | 3 | 19 | 0 | 4 | 0 | 1 |
| SimpleSourcePosition | | 45% | | n/a | 1 | 4 | 1 | 7 | 1 | 4 | 0 | 1 |
| RubyLexer.Keyword |  | 99% | | n/a | 2 | 4 | 0 | 48 | 2 | 4 | 0 | 1 |
| SyntaxException.PID |  | 98% | | n/a | 2 | 5 | 1 | 36 | 2 | 5 | 0 | 1 |
| RubyLexer.LexState |  | 96% | | n/a | 1 | 4 | 0 | 3 | 1 | 4 | 0 | 1 |
| RubyLexer.new Object() {...} | | 88% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
| InvalidSourcePosition | | 67% | | n/a | 2 | 4 | 2 | 4 | 2 | 4 | 0 | 1 |
| ByteArrayLexerSource.ByteArrayCursor |  | 100% |  | 90% | 1 | 9 | 0 | 17 | 0 | 4 | 0 | 1 |
| StackState |  | 100% | | 100% | 0 | 9 | 0 | 18 | 0 | 8 | 0 | 1 |
| SyntaxException | | 100% | | 80% | 2 | 9 | 0 | 10 | 0 | 4 | 0 | 1 |
| StrTerm | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |