@SuppressFBWarnings(value = "NP_NULL_PARAM_DEREF", justification = "Exception before reaching NP")
  public void verifyAndSet(String name, String value) throws IllegalArgumentException {
    if (modWhiteListPattern != null) {
      Matcher wlMatcher = modWhiteListPattern.matcher(name);
      if (!wlMatcher.matches()) {
        throw new IllegalArgumentException("Cannot modify " + name + " at runtime. "
            + "It is not in list of params that are allowed to be modified at runtime");
      }
    }
    if (Iterables.any(restrictList,
        restrictedVar -> name != null && name.startsWith(restrictedVar))) {
      throw new IllegalArgumentException("Cannot modify " + name + " at runtime. It is in the list"
          + " of parameters that can't be modified at runtime or is prefixed by a restricted variable");
    }
    if (isLockedConfig(name)) {
      return;
    }
    String oldValue = name != null ? get(name) : null;
    if (name == null || value == null || !value.equals(oldValue)) {
      // When either name or value is null, the set method below will fail,
      // and throw IllegalArgumentException
      set(name, value);
    }
  }
Writes the default ConfVars out to a byte array and returns an input
stream wrapping that byte array.

We need this in order to initialize the ConfVar properties
in the underling Configuration object using the addResource(InputStream)
method.

It is important to use a LoopingByteArrayInputStream because it turns out
addResource(InputStream) is broken since Configuration tries to read the
entire contents of the same InputStream repeatedly without resetting it.
LoopingByteArrayInputStream has special logic to handle this.
common/src/java/org/apache/hadoop/hive/conf/HiveConf.java