code: public Stream<Capabilities> stream() throws IOException {
          // OSS first
          Stream<Map<String, Object>> oss = Stream.of(getOss());
  
          // And now W3C
          Stream<Map<String, Object>> w3c = getW3C();
  
          return Stream.concat(oss, w3c)
                  .filter(Objects::nonNull)
                  .map(this::applyTransforms)
                  .filter(Objects::nonNull)
                  .distinct()
                  .map(ImmutableCapabilities::new);
      }
docs: Stream the {@link Capabilities} encoded in the payload used to create this instance. The
  {@link Stream} will start with a {@link Capabilities} object matching the OSS capabilities, and
  will then expand each of the "{@code firstMatch}" and "{@code alwaysMatch}" contents as defined
  in the W3C WebDriver spec. The OSS {@link Capabilities} are listed first because converting the
  OSS capabilities to the equivalent W3C capabilities isn't particularly easy, so it's hoped that
  this approach gives us the most compatible implementation.