package org.grouplens.grapht.util;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Arrays;

class ParameterizedTypeImpl implements ParameterizedType {
    private final Class<?> rawType;
    private final Type[] arguments;
    
    ParameterizedTypeImpl(Class<?> rawType, Type[] arguments) {
        this.rawType = rawType;
        this.arguments = arguments;
    }
    
    @Override
    public Type[] getActualTypeArguments() {
        // defensive copy
        return Arrays.copyOf(arguments, arguments.length);
    }

    @Override
    public Type getRawType() {
        return rawType;
    }

    @Override
    public Type getOwnerType() {
        return null;
    }
}

@@ -710,10 +710,490 @@
 ;%0A    %7D%0A
+    %0A    @Override%0A    public boolean equals(Object o) %7B%0A        if (!(o instanceof ParameterizedType)) %7B%0A            return false;%0A        %7D%0A        ParameterizedType t = (ParameterizedType) o;%0A        return t.getRawType().equals(rawType) && %0A               t.getOwnerType() == null &&%0A               Arrays.equals(arguments, t.getActualTypeArguments());%0A    %7D%0A    %0A    @Override%0A    public int hashCode() %7B%0A        return rawType.hashCode() %5E Arrays.hashCode(arguments);%0A    %7D%0A
 %7D%0A

Add equals etc to ParameterizedTypeImpl