code: private Iterable<String> getAllIncluding(String index, Iterable<String> keys, IterableChain<String> result) {
          result.addAll(keys);
          for (String key : keys) {
              Iterable<String> values = get(index, key);
              if (values.iterator().hasNext()) {
                  getAllIncluding(index, values, result);
              }
          }
          return result;
      }
docs: recursively get the values stored for the given {@code index} and {@code keys}, including keys