type Bar = ( number | string ) => number;
type X = (?(number, number) => number) => void;
type X = ?((number, number) => number) => void;
type X = ?(number, number) => number => void;
type X = 1234 => void;
type X = 'abc' => void;
type X = true => void;
type X = false => void;
type X = boolean => void;
type X = number => void;
type X = void => void;
type X = null => void;
type X = any => void;
type X = empty => void;
type X = mixed => void;
type X = string => void;
type X = abc => void;
type X = a | b => void;
type X = (a | b) => void;
type X = a & b => void;
type X = (a & b) => void;
