/**
  * @param targets the type parameters whose arguments we are trying to solve for
  * @return true if this constraint can't be broken up into other constraints or further simplified
  *     In general, if either argument or formal parameter is a use of the type parameters we are
  *     inferring over then the constraint cannot be reduced further
  */
 public boolean isIrreducible(final Set<TypeVariable> targets) {
   return TypeArgInferenceUtil.isATarget(argument, targets)
       || TypeArgInferenceUtil.isATarget(formalParameter, targets);
 }