code: public String getString(int key) {
          Any3<Boolean, Integer, String> value = data.get(Any2.<Integer, String>left(key));
          if (value == null)
              throw new IllegalArgumentException("missing argument for param " + key);
          return value.get3().orElseThrow(() -> new IllegalArgumentException("expected string argument for param " + key));
      }
docs: Return the string value indicated by the given numeric key.
  
  @param key The key of the value to return.
  @return The string value stored under the given key.
  @throws IllegalArgumentException if the value is absent or not a string.