static void visitMappingProperties(ObjectNode mapping,
                                     BiConsumer<String, String> consumer) {
    Objects.requireNonNull(mapping, "mapping");
    Objects.requireNonNull(consumer, "consumer");
    visitMappingProperties(new ArrayDeque<>(), mapping, consumer);
  }
Visits Elasticsearch
<a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html">mapping
properties</a> and calls consumer for each {@code field / type} pair.
Nested fields are represented as {@code foo.bar.qux}.
criteria/elasticsearch/src/org/immutables/criteria/elasticsearch/Json.java