@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        ParameterizedTypeImpl that = (ParameterizedTypeImpl) o;
        // Probably incorrect - comparing Object[] arrays with Arrays.equals
        if (!Arrays.equals(actualTypeArguments, that.actualTypeArguments)) return false;
        if (ownerType != null ? !ownerType.equals(that.ownerType) : that.ownerType != null) return false;
        return rawType != null ? rawType.equals(that.rawType) : that.rawType == null;
    }
@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        ParameterizedTypeImpl that = (ParameterizedTypeImpl) o;
       
        if (!Arrays.equals(actualTypeArguments, that.actualTypeArguments)) return false;
        if (ownerType != null ? !ownerType.equals(that.ownerType) : that.ownerType != null) return false;
        return rawType != null ? rawType.equals(that.rawType) : that.rawType == null;
    }
@override public boolean equals(object o) { if (this == o) return true; if (o == null || getclass() != o.getclass()) return false; parameterizedtypeimpl that = (parameterizedtypeimpl) o; if (!arrays.equals(actualtypearguments, that.actualtypearguments)) return false; if (ownertype != null ? !ownertype.equals(that.ownertype) : that.ownertype != null) return false; return rawtype != null ? rawtype.equals(that.rawtype) : that.rawtype == null; }