{{- range $interface := .Interfaces }} func (ec *executionContext) _{{$interface.Name}}(ctx context.Context, sel ast.SelectionSet, obj {{$interface.Type | ref}}) graphql.Marshaler { switch obj := (obj).(type) { case nil: return graphql.Null {{- range $implementor := $interface.Implementors }} case {{$implementor.Type | ref}}: {{- if $implementor.CanBeNil }} if obj == nil { return graphql.Null } {{- end }} return ec._{{$implementor.Name}}(ctx, sel, {{ if $implementor.TakeRef }}&{{ end }}obj) {{- end }} default: panic(fmt.Errorf("unexpected type %T", obj)) } } {{- end }}