code: public static NestableFieldValidator mapFv(final NestableFieldValidator key,
                                                 final NestableFieldValidator val, final boolean nullAllowed) {
          return new NestableFieldValidator() {
              @SuppressWarnings("unchecked")
              @Override
              public void validateField(String pd, String name, Object field) throws IllegalArgumentException {
                  if (nullAllowed && field == null) {
                      return;
                  }
                  if (field instanceof Map) {
                      for (Map.Entry<Object, Object> entry : ((Map<Object, Object>) field).entrySet()) {
                          key.validateField("Each key of the map ", name, entry.getKey());
                          val.validateField("Each value in the map ", name, entry.getValue());
                      }
                      return;
                  }
                  throw new IllegalArgumentException("Field " + name + " must be a Map");
              }
          };
      }
docs: Returns a new NestableFieldValidator for a Map.
  
  @param key         a validator for the keys in the map
  @param val         a validator for the values in the map
  @param nullAllowed whether or not a value of null is valid
  @return a NestableFieldValidator for a Map