func (a *api) outputDispatchers(f simprogtext.SimProgFile) {
	mCallParam := simprogtext.NewSimpleVar("mc")
	errVar := simprogtext.NewSimpleVar("err")
	argsVar := simprogtext.NewSimpleVar("arg")
	rcvVar := simprogtext.NewSimpleVar("r")

	for rcvTypeName, methods := range a.Methods {

		f.AddLineIndent(
			"func (%s *%s) Dispatch(%s *vesupro.MethodCall) "+
				"(vesupro.VesuproObject, error) {",
			rcvVar.VarName(), rcvTypeName, mCallParam.VarName())
		f.AddLine("var %s error", errVar.VarName())
		f.AddLine("%s := %s.Arguments", argsVar.VarName(),
			mCallParam.VarName())

		f.AddLine("switch %s.Name {", mCallParam.VarName())

		for _, _m := range methods {
			m := (*method)(_m)
			f.AddLineIndent("case %q:", m.Name)
			m.outputCall(f, mCallParam, argsVar, errVar, rcvVar,
				[]string{"nil"})
			f.Unindent()
		}

		f.AddLineIndent("default:")
		f.AddLine(`return nil,fmt.Errorf("Unknown function %%s.", %s.Name)`,
			mCallParam.VarName())
		f.AddLineUnindent("}") // switch
		f.AddLineUnindent("}") // DispatchCall function
	}
}