UBT doesn't seem to need to be recompiled

Guys, I’m working in my spare free time on actually using intel compiler on Windows with UE4.

There is UBT which is called each time you need to build anything. That’s fine.
In UBT there is a VCToolchain.cs which is responsible for choosing appropriate compiler and sending amongst other things options to this compiler. That’s fine.
Till yesterday I thought that each time I’ve change anything in VCToolchain.cs I need to recompile UnrealBuildTool. By accident I’ve changed one parameter and run build some other project without actually rebuilding UBT and what happened? The new, not compiled VCToolchain.cs file got used, that is the changed options for compiler where used without recompiling UBT.

Could anyone please explain to me how is that possible?

Thank you.