I was curious about the implementation of MCPhase/MCU1Gate and how it works without ancilla qubits. I ended up checking the code of the some auxiliary (?) function
_gray_code_chain() but I couldn't understand much of it.
update: it seems that MCU1Gate is deprecated and MCPhase will substitute it - the code is the same anyway.