@Override
    public int hashCode() {
        int hash = 3;
        hash = 89 * hash + (this.var ? 1 : 0);
        hash = 89 * hash + (this.nat ? 1 : 0);
        hash = 89 * hash + (this.cons != null ? this.cons.hashCode() : 0);
        hash = 89 * hash + Arrays.deepHashCode(this.params);
        hash = 89 * hash + (this.wildcard ? 1 : 0);
        hash = 89 * hash + (this.superType != null ? this.superType.hashCode() : 0);
        return hash;
    }