code: @Handler
      @SuppressWarnings({ "PMD.AvoidInstantiatingObjectsInLoops",
          "PMD.AccessorClassGeneration", "PMD.AvoidDuplicateLiterals" })
      public void onStreamFile(StreamFile event)
              throws InterruptedException {
          if (Arrays.asList(event.options())
              .contains(StandardOpenOption.WRITE)) {
              throw new IllegalArgumentException(
                  "Cannot stream file opened for writing.");
          }
          for (IOSubchannel channel : event.channels(IOSubchannel.class)) {
              if (inputWriters.containsKey(channel)) {
                  channel.respond(new IOError(event,
                      new IllegalStateException("File is already open.")));
              } else {
                  new FileStreamer(event, channel);
              }
          }
      }
docs: Opens a file for reading using the properties of the event and streams
  its content as a sequence of {@link Output} events with the
  end of record flag set in the last event. All generated events are
  considered responses to this event and therefore fired using the event
  processor from the event's I/O subchannel.
  
  @param event the event
  @throws InterruptedException if the execution was interrupted