Does not use let* for singleton or empty bindings. Improve let-extraction predicate