When moving function definitions to a different context, the function
name might need a different spelling, for example in the header it might be:
namespace a { void foo() {} }
And we might want to move it into a context which doesn't have namespace a as
a parent, then we must re-spell the function name, i.e:
void a::foo() {}
This patch implements a version of this which ignores using namespace
declarations in the source file.
maybe name them TestHeader, and TestSource.