// check for presence of any nodes
if (rootNodes == null || rootNodes.isEmpty()) {
return new Pair<Map<CompositionNode.CompositionArgument, TypeExpr>, Map<CompositionNode, List<TypeExpr>>>(argMap, rootNodeMap);
}
final CheckGraphSource checkGraphSource = CALSourceGenerator.getCheckGraphSource(rootNodes);
final SourceModel.FunctionDefn functionSource = checkGraphSource.getGraphFunction();
final Map<CompositionNode, List<CompositionNode.CompositionArgument>> rootToArgumentsMap = checkGraphSource.getRootToArgumentsMap();
final List<CompositionNode.CompositionArgument> unusedArgumentList = checkGraphSource.getUnusedArgumentList();
final Map<CompositionNode.CompositionArgument, CompositionNode.CompositionArgument> recursiveEmitterArgumentToReflectedInputMap = checkGraphSource.getRecursiveEmitterArgumentToReflectedInputMap();
// get the type for the graph, break it up
// Where there are n+1 roots (typed xi) and m+1 unused vars (typed yi) this returns the type
// x0 -> x1 -> ... -> xn -> y0 -> y1 -> ... -> ym -> Double
final TypeExpr functionType = checkFunction(new AdjunctSource.FromSourceModel(functionSource), moduleName);