fix(post_processing): split semantic callers within xrefs group (#3776)

Fixes #3768
diff --git a/kythe/go/serving/pipeline/beam.go b/kythe/go/serving/pipeline/beam.go
index ad2c7cb..a6be403 100644
--- a/kythe/go/serving/pipeline/beam.go
+++ b/kythe/go/serving/pipeline/beam.go
@@ -357,17 +357,27 @@
 				g = &srvpb.PagedCrossReferences_Group{
 					Kind:        kind,
 					BuildConfig: config,
-					Caller: []*srvpb.PagedCrossReferences_Caller{{
-						Caller:         caller.Location,
-						SemanticCaller: ticket,
-						MarkedSource:   caller.MarkedSource,
-					}},
 				}
 				configs[config] = g
 				set.Group = append(set.Group, g)
 			}
 
-			g.Caller[0].Callsite = append(g.Caller[0].Callsite, site.Location)
+			var groupCaller *srvpb.PagedCrossReferences_Caller
+			for _, c := range g.Caller {
+				if c.SemanticCaller == ticket {
+					groupCaller = c
+					break
+				}
+			}
+			if groupCaller == nil {
+				groupCaller = &srvpb.PagedCrossReferences_Caller{
+					Caller:         caller.Location,
+					SemanticCaller: ticket,
+					MarkedSource:   caller.MarkedSource,
+				}
+				g.Caller = append(g.Caller, groupCaller)
+			}
+			groupCaller.Callsite = append(groupCaller.Callsite, site.Location)
 		}
 	}