private static String getInvalidCharacters(@Nullable String value) {
    if (value == null) {
      return "tag is null";
    }
    if (value.isEmpty()) {
      return "tag is empty";
    }
    return value.codePoints()
      .filter(INVALID_CODE_POINTS)
      .distinct()
      .mapToObj(Character::getName)
      .collect(joining(", "));
  }
Creates a new {@link TestTag} with the given value.

Must not contain any of the following characters:
<ul>
  <li>White Space</li>
  <li>ISO Control Characters</li>
  <li>{@code !}</li>
  <li>{@code &}</li>
  <li>{@code (}</li>
  <li>{@code )}</li>
  <li>{@code ,}</li>
  <li>{@code |}</li>
</ul>

@param tag the value of the tag
@return a new {@link TestTag}
spock-core/src/main/java/org/spockframework/runtime/model/TestTag.java