code: protected void setup(T ref, String... requiredParams) {
          thisRef = ref;
          if (requiredParams == null) {
              throw new IllegalArgumentException("Set of required params cannot be null");
          }
          for (String param : requiredParams) {
              required.add(PREFIX + param);
          }
      }
docs: /*
  To make it convenient for all sub-types to just return the results of setParam
  the sub type should call setup passing it's this reference
  
  @param ref "this" in any sub type