code: protected <G extends T> G parseElements(Type targetType, String value, Type elementType)
      {
          String cleanedValue = cleanValue(value);
  
          try {
              // Set up a StreamTokenizer on the characters in this String
              StreamTokenizer st = createStreamTokenizer(cleanedValue);
  
              // Split comma-delimited tokens into a List
              T collection = newCollection(targetType);
              while (true) {
                  int ttype = st.nextToken();
                  if (ttype == StreamTokenizer.TT_WORD || ttype > 0) {
                      if (st.sval != null) {
                          Object objValue = st.sval;
                          if (elementType != null && elementType != String.class) {
                              objValue = this.converterManager.convert(elementType, objValue);
                          }
  
                          collection.add(objValue);
                      }
                  } else if (ttype == StreamTokenizer.TT_EOF) {
                      break;
                  } else {
                      throw new ConversionException("Encountered token of type " + ttype + " parsing elements.");
                  }
              }
  
              // Return the completed list
              return (G) collection;
          } catch (IOException e) {
              throw new ConversionException("Error converting from String: " + e.getMessage(), e);
          }
      }
docs: <p>
  Parse an incoming String of the form similar to an array initializer in the Java language into a
  <code>List</code> individual Strings for each element, according to the following rules.
  </p>
  <ul>
  <li>The string is expected to be a comma-separated list of values.</li>
  <li>The string may optionally have matching '{' and '}' delimiters around the list.</li>
  <li>Whitespace before and after each element is stripped.</li>
  <li>Elements in the list may be delimited by single or double quotes. Within a quoted elements, the normal Java
  escape sequences are valid.</li>
  </ul>
  
  @param <G> the type in which the provided value has to be converted
  @param targetType Data type to which this value should be converted.
  @param value String value to be parsed
  @param elementType the generic type
  @return List of parsed elements.
  @throws ConversionException if the syntax of <code>value</code> is not syntactically valid
  @throws NullPointerException if <code>value</code> is <code>null</code>