@@ -0,0 +1,1748 @@
+/**%0A *%0A * Copyright 2020 Florian Schmaus.%0A *%0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A *     http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0Apackage org.jivesoftware.smack.util;%0A%0Apublic final class Pair%3CF, S%3E %7B%0A%0A    private final F first;%0A    private final S second;%0A%0A    private Pair(F first, S second) %7B%0A        this.first = first;%0A        this.second = second;%0A    %7D%0A%0A    public static %3CF extends Object, S extends Object%3E Pair%3CF, S%3E create(F first, S second) %7B%0A        return new Pair%3C%3E(first, second);%0A    %7D%0A%0A    public static %3CF extends Object, S extends Object%3E Pair%3CF, S%3E createAndInitHashCode(F first, S second) %7B%0A        Pair%3CF, S%3E pair = new Pair%3C%3E(first, second);%0A        pair.hashCode();%0A        return pair;%0A    %7D%0A%0A    public F getFirst() %7B%0A        return first;%0A    %7D%0A%0A    public S getSecond() %7B%0A        return second;%0A    %7D%0A%0A    private final HashCode.Cache hashCodeCache = new HashCode.Cache();%0A%0A    @Override%0A    public int hashCode() %7B%0A        return hashCodeCache.getHashCode(c -%3E%0A            c.append(first)%0A             .append(second)%0A        );%0A    %7D%0A%0A    @Override%0A    public boolean equals(Object object) %7B%0A        return EqualsUtil.equals(this, object, (e, o) -%3E%0A            e.append(first, o.first)%0A             .append(second, o.second)%0A        );%0A    %7D%0A%7D%0A

Add Pair utility class