first cut of FunctionDecomposer#decompose
rename *FunctionDecomposer to FunctionDecomposer::*