class CompoundParams implements javax0.geci.api.CompoundParams {

    @Override
    public Set<String> keySet() {
        final Stream<Set<String>> keyStream;
        if (params != null) {
            keyStream = Arrays.stream(params).filter(Objects::nonNull)
                            .map(Map::keySet);
        } else if (cparams != null) {
            keyStream = Arrays.stream(cparams).filter(Objects::nonNull)
                            .map(CompoundParams::keySet);
        } else {
            keyStream = Stream.of();
        }
        return keyStream.filter(Objects::nonNull).flatMap(Collection::stream)
                   .collect(Collectors.toSet());
    }

    @SafeVarargs public  CompoundParams(String id, Map<String, ?>... params);
    public  CompoundParams(CompoundParams... cparams);

}