@@ -0,0 +1,998 @@
+package org.apache.uima.internal.util;%0D%0A%0D%0Apublic class Pair%3CT, U%3E %7B%0D%0A%0D%0A  final T t;%0D%0A  final U u;%0D%0A%0D%0A  public Pair(T t, U u) %7B%0D%0A    this.t = t;%0D%0A    this.u = u;%0D%0A  %7D%0D%0A%0D%0A  @Override%0D%0A  public int hashCode() %7B%0D%0A    final int prime = 31;%0D%0A    int result = 1;%0D%0A    result = prime * result + ((t == null) ? 0 : t.hashCode());%0D%0A    result = prime * result + ((u == null) ? 0 : u.hashCode());%0D%0A    return result;%0D%0A  %7D%0D%0A%0D%0A  @Override%0D%0A  public boolean equals(Object obj) %7B%0D%0A    if (this == obj) %7B%0D%0A      return true;%0D%0A    %7D%0D%0A    if (obj == null) %7B%0D%0A      return false;%0D%0A    %7D%0D%0A    if (getClass() != obj.getClass()) %7B%0D%0A      return false;%0D%0A    %7D%0D%0A    Pair other = (Pair) obj;%0D%0A    if (t == null) %7B%0D%0A      if (other.t != null) %7B%0D%0A        return false;%0D%0A      %7D%0D%0A    %7D else if (!t.equals(other.t)) %7B%0D%0A      return false;%0D%0A    %7D%0D%0A    if (u == null) %7B%0D%0A      if (other.u != null) %7B%0D%0A        return false;%0D%0A      %7D%0D%0A    %7D else if (!u.equals(other.u)) %7B%0D%0A      return false;%0D%0A    %7D%0D%0A    return true;%0D%0A  %7D%0D%0A  %0D%0A%7D%0D%0A

add generic Pair (of T, U) with hashcode and equals for use as key, used in compare method for CASes to break recursions