def METHOD_NAME(self):
    """Ensure function first works correctly"""
    self.assertEqual(42, first([0, False, None, [], (), 42]))
    self.assertEqual(None, first([0, False, None, [], ()]))
    self.assertEqual('ohai', first([0, False, None, [], ()], default='ohai'))
    self.assertEqual('bc', first(re.match(regex, 'abc') for regex in ['b.*', 'a(.*)']).group(1))
    self.assertEqual(4, first([1, 1, 3, 4, 5], key=lambda x: x % 2 == 0))