code: static Map<String, String> valueAsMapOfStrings(Map<String, Object> map, Key key, Map<String, String> defaultValue) {
          Map<String, Object> castedDefaultValue = new HashMap<String, Object>();
          castedDefaultValue.putAll(defaultValue);
  
          Map<String, Object> uncastedResult = valueAsMap(map, key, castedDefaultValue);
          Map<String, String> castedResult = new HashMap<String, String>();
          for (Map.Entry<String, Object> entry : uncastedResult.entrySet()) {
              castedResult.put(entry.getKey(), entry.getValue() == null ? null : entry.getValue().toString());
          }
          return castedResult;
      }
docs: Fetches a value specified by key
  
  @param map XPP3 map equivalent
  @param key navigation key
  @param defaultValue Default value if no such key exists
  @return Map representation of the values mapped into Strings