BinarySearch

Note: this is broken, needs fixing

e.g.
 * Expected value: 2
 * Actual value: -1 (bug)