demangle.go
func (st *state) closureTypeName() AST {
	st.checkChar('U')
	st.checkChar('l')
	types := st.parmlist()
	if len(st.str) == 0 || st.str[0] != 'E' {
		st.fail("expected E after closure type name")
	}
	st.advance(1)
	num := st.compactNumber()
	ret := &Closure{Types: types, Num: num}
	st.subs.add(ret)
	return ret
}
func (st *state) closureTypeName() AST {
	st.checkChar('U')
	st.checkChar('l')
	types := st.parmlist()
	if len(st.str) == 0 || st.str[0] != 'E' {
		st.fail("expected E after closure type name")
	}
	st.advance(1)
	num := st.compactNumber()
	ret := &Closure{Types: types, Num: num}
	st.subs.add(ret)
	return ret
}
// <closure-type-name> ::= Ul <lambda-sig> E [ <nonnegative number> ] _