package xsbti.api;
import java.util.Arrays;
import java.util.List;
public final class TypeParameter implements java.io.Serializable
{
public TypeParameter(String id, Annotation[] annotations, TypeParameter[] typeParameters, Variance variance, Type lowerBound, Type upperBound)
{
this.id = id;
this.annotations = annotations;
this.typeParameters = typeParameters;
this.variance = variance;
this.lowerBound = lowerBound;
this.upperBound = upperBound;
}
private final String id;
private final Annotation[] annotations;
private final TypeParameter[] typeParameters;
private final Variance variance;
private final Type lowerBound;
private final Type upperBound;
public final String id()
{
return id;
}
public final Annotation[] annotations()
{
return annotations;
}
public final TypeParameter[] typeParameters()
{
return typeParameters;
}
public final Variance variance()
{
return variance;
}
public final Type lowerBound()
{
return lowerBound;
}
public final Type upperBound()
{
return upperBound;
}
public boolean equals(Object obj)
{
if (this == obj) {
return true;
} else if (!(obj instanceof TypeParameter)) {
return false;
} else {
TypeParameter o = (TypeParameter)obj;
return id().equals(o.id()) && Arrays.deepEquals(annotations(), o.annotations()) && Arrays.deepEquals(typeParameters(), o.typeParameters()) && variance().equals(o.variance()) && lowerBound().equals(o.lowerBound()) && upperBound().equals(o.upperBound());
}
}
public int hashCode()
{
return 37 * (37 * (37 * (37 * (37 * (37 * (17) + id().hashCode()) + Arrays.deepHashCode(annotations())) + Arrays.deepHashCode(typeParameters())) + variance().hashCode()) + lowerBound().hashCode()) + upperBound().hashCode();
}
public String toString()
{
return "TypeParameter(" + "id: " + id() + ", " + "annotations: " + Arrays.toString(annotations()) + ", " + "typeParameters: " + Arrays.toString(typeParameters()) + ", " + "variance: " + variance() + ", " + "lowerBound: " + lowerBound() + ", " + "upperBound: " + upperBound() + ")";
}
}