class JsonCnd {

    static <B, D, K extends KeyDefinitionToken<B, D>> void
    internalReadAllTo(final @NotNull NamePathResolver resolver,
                      final @NotNull B builder,
                      final @NotNull JsonValue parentValue,
                      final @NotNull K[] tokens) {
        if (parentValue.getValueType() == JsonValue.ValueType.OBJECT) {
            JsonObject json = parentValue.asJsonObject();
            Stream.of(tokens)
                    .filter(inferTest1(K::nonUnknown).and(internalJsonContainsAnyLexToken(json)))
                    .map(key -> toEntry(key, internalJsonLookupByAnyLexToken(key, json)))
                    .filter(testValue(JavaxJson::nonEmptyValue))
                    .forEachOrdered(onEntry((key, keyValue) -> key.readTo(resolver, builder, keyValue)));
        }
    }

    private  JsonCnd();

}