Não é possível atribuir um delegado de um tipo para outro, mesmo que a assinatura corresponda

Minha curiosidade mórbida me faz pensar por que o seguinte falha:

// declared somewhere
public delegate int BinaryOperation(int a, int b);

// ... in a method body
Func<int, int, int> addThem = (x, y) => x + y;

BinaryOperation b1 = addThem; // doesn't compile, and casting doesn't compile
BinaryOperation b2 = (x, y) => x + y; // compiles!

questionAnswers(2)

yourAnswerToTheQuestion