for (ProducedType act: argType.getDeclaration().getCaseTypes()) {
//some element of the argument union is already a subtype
//of the parameter union, so throw it away from both unions
if (act.substitute(argType.getTypeArguments()).isSubtypeOf(paramType)) {
pt = pt.shallowMinus(act);
apt = apt.shallowMinus(act);
}
}
}
if (pt.getDeclaration() instanceof UnionType) {
boolean found = false;