public static <E> Set<E> newLinkedHashSet(E... elements) {
        Set<E> set = new LinkedHashSet<>(elements.length);
        Collections.addAll(set, elements);
        return set;
    }
<p>Gets a substring from the specified String avoiding exceptions.</p>

<p>A negative start position can be used to start/end {@code n}
characters from the end of the String.</p>

<p>The returned substring starts with the character in the {@code start}
position and ends before the {@code end} position. All position counting is
zero-based -- i.e., to start at the beginning of the string use
{@code start = 0}. Negative start and end positions can be used to
specify offsets relative to the end of the String.</p>

<p>If {@code start} is not strictly to the left of {@code end}, ""
is returned.</p>

<pre>
StringUtils.substring(null, *, *)    = null
StringUtils.substring("", * ,  *)    = "";
StringUtils.substring("abc", 0, 2)   = "ab"
StringUtils.substring("abc", 2, 0)   = ""
StringUtils.substring("abc", 2, 4)   = "c"
StringUtils.substring("abc", 4, 6)   = ""
StringUtils.substring("abc", 2, 2)   = ""
StringUtils.substring("abc", -2, -1) = "b"
StringUtils.substring("abc", -4, 2)  = "ab"
</pre>

@param str  the String to get the substring from, may be null
@param start  the position to start from, negative means
 count back from the end of the String by this many characters
@param end  the position to end at (exclusive), negative means
 count back from the end of the String by this many characters
@return substring from start position to end position,
 {@code null} if null String input
primefaces/src/main/java/org/primefaces/util/LangUtils.java