foo1.Transfer(foo2, 25); // Ok, foo2 now is full, foo1 have amount 50, foo2 amount 100
foo1.Transfer(foo2, 25); // Throw overflow exception, because 100 + 25 > 125
foo1.Transfer(foo2, 100); // Throw other exception, because now foo1 have Amount = 50
foo1.Transfer(foo2, 25); // Ok, foo2 now is full, foo1 have amount 50, foo2 amount 100
foo1.Transfer(foo2, 25); // Throw overflow exception, because 100 + 25 > 125
foo1.Transfer(foo2, 100); // Throw other exception, because now foo1 have Amount = 50