code: public ConfigResolveOptions appendResolver(ConfigResolver value) {
          if (value == null) {
              throw new ConfigException.BugOrBroken("null resolver passed to appendResolver");
          } else if (value == this.resolver) {
              return this;
          } else {
              return new ConfigResolveOptions(useSystemEnvironment, allowUnresolved,
                      this.resolver.withFallback(value));
          }
      }
docs: Returns options where the given resolver used as a fallback if a
  reference cannot be otherwise resolved. This resolver will only be called
  after resolution has failed to substitute with a value from within the
  config itself and with any other resolvers that have been appended before
  this one. Multiple resolvers can be added using,
  
  <pre>
  ConfigResolveOptions options = ConfigResolveOptions.defaults()
  .appendResolver(primary)
  .appendResolver(secondary)
  .appendResolver(tertiary);
  </pre>
  
  With this config unresolved references will first be resolved with the
  primary resolver, if that fails then the secondary, and finally if that
  also fails the tertiary.
  
  If all fallbacks fail to return a substitution "allow unresolved"
  determines whether resolution fails or continues.
  `
  @param value the resolver to fall back to
  @return options that use the given resolver as a fallback
  @since 1.3.2