@Test
  public void testCanSetPropertyValueResolver() {
    builder.setPropertyValueResolver(
        new ValueResolver() {
          @Override
          public Properties resolvedPropertyValues(Properties properties) {
            return resolvedPropertyValues(properties, false);
          }

          public Properties resolvedPropertyValues(Properties properties, boolean trimValues) {
            Properties p = new Properties();
            p.putAll(Collections.singletonMap("hey", "hey"));
            return p;
          }

          @Override
          public Map<String, String> resolvedPropertyValues(Map<String, String> properties) {
            return resolvedPropertyValues(properties, false);
          }

          public Map<String, String> resolvedPropertyValues(
              Map<String, String> properties, boolean trimValues) {
            return Collections.singletonMap("hey", "hey");
          }

          @Override
          public String resolvedPropertyValue(Properties properties, String key) {
            return resolvedPropertyValue(properties, key, false);
          }

          public String resolvedPropertyValue(
              Properties properties, String key, boolean trimValues) {
            return "hey";
          }

          @Override
          public String resolvedPropertyValue(Map<String, String> map, String key) {
            return resolvedPropertyValue(map, key, false);
          }

          public String resolvedPropertyValue(
              Map<String, String> map, String key, boolean trimValues) {
            return "hey";
          }
        });

    ValueResolver v = builder.getValueResolver();

    assertEquals("hey", v.resolvedPropertyValue(new Properties(), "x"));
    assertEquals("hey", v.resolvedPropertyValue(Collections.singletonMap("hey", "hey"), "x"));
  }