void (final Constraint x, final Constraint y) { reduceSideVar(x, y, new Reducer() { @Override public LinkedList<Pair<PsiType, Binding>> unify(final PsiType x, final PsiType y) { return myBindingFactory.intersect(x, y); } @Override public Constraint create(final PsiTypeVariable var, final PsiType type) { return new Subtype(type, var); } @Override public PsiType getType(final Constraint c) { return c.getLeft(); } @Override public PsiTypeVariable getVar(final Constraint c) { return (PsiTypeVariable)c.getRight(); } }); }