code: @Override
      public void dissect(final Parsable<?> parsable, final String inputname) throws DissectionFailure {
          final ParsedField field = parsable.getParsableField(HTTP_FIRSTLINE, inputname);
  
          final String fieldValue = field.getValue().getString();
          if (fieldValue == null || fieldValue.isEmpty() || "-".equals(fieldValue)){
              return; // Nothing to do here
          }
  
          // Now we create a matcher for this line
          Matcher matcher = firstlineSplitter.matcher(fieldValue);
  
          // Is it all as expected?
          boolean matches = matcher.find();
  
          if (matches && matcher.groupCount() == 3) {
              outputDissection(parsable, inputname, "HTTP.METHOD", "method", matcher, 1);
              outputDissection(parsable, inputname, "HTTP.URI", "uri", matcher, 2);
              outputDissection(parsable, inputname, "HTTP.PROTOCOL_VERSION", "protocol", matcher, 3);
              return;
          }
  
          // In the scenario that the actual URI is too long the last part ("HTTP/1.1") may have been cut off by the
          // Apache HTTPD webserver. To still be able to parse these we try that pattern too
  
          // Now we create a matcher for this line
          matcher = tooLongFirstlineSplitter.matcher(fieldValue);
  
          // Is it all as expected?
          matches = matcher.find();
  
          if (matches && matcher.groupCount() == 2) {
              outputDissection(parsable, inputname, "HTTP.METHOD", "method", matcher, 1);
              outputDissection(parsable, inputname, "HTTP.URI", "uri", matcher, 2);
              parsable.addDissection(inputname, "HTTP.PROTOCOL_VERSION", "protocol", (String) null);
          }
      }
docs: --------------------------------------------