code: @SuppressWarnings("unchecked")
      @FFDCIgnore(Exception.class)
      public static Collection<String> parseStringCollection(String propertyKey, Object obj, Collection<String> defaultValue) {
          if (obj != null) {
              try {
                  if (obj instanceof Collection) {
                      return (Collection<String>) obj;
                  } else if (obj instanceof String) {
                      String commaList = (String) obj;
                      // split the string, consuming/removing whitespace
                      return Arrays.asList(commaList.split("\\s*,\\s*"));
                  } else if (obj instanceof String[]) {
                      return Arrays.asList((String[]) obj);
                  }
              } catch (Exception e) {
                  throw new IllegalArgumentException("Collection of strings could not be parsed: key=" + propertyKey + ", value=" + obj, e);
              }
  
              // unknown type
              throw new IllegalArgumentException("Collection of strings could not be parsed: key=" + propertyKey + ", value=" + obj);
          }
  
          return defaultValue;
      }
docs: Parse a string collection and returns
  a collection of strings generated from either a comma-separated single
  string value, or a string collection.
  <p>
  If an exception occurs converting the object parameter:
  FFDC for the exception is suppressed: Callers should handle the thrown
  IllegalArgumentException as appropriate.
  
  @param propertyKey
  The name of the configuration property.
  @param obj
  The object retrieved from the configuration property map/dictionary.
  @param defaultValue
  The default value that should be applied if the object is null.
  
  @return Collection of strings parsed/retrieved from obj, or default value if obj is null
  @throws IllegalArgumentException If value is not a String, String collection, or String array, or if an error
  occurs while converting/casting the object to the return parameter type.