Type rightBaseType = rightType.getType();
boolean baseAssignable = isAssignable(leftBaseType,
rightBaseType);
if (baseAssignable) {
List leftArgs = leftType.typeArguments();
List rightArgs = rightType.typeArguments();
if (leftArgs.size() != rightArgs.size())
return false;
for (int i = 0; i < leftArgs.size(); i++) {
Type leftArgType = (Type) leftArgs.get(i);
Type rightArgType = (Type) rightArgs.get(i);