code: func IndexSourceCodeInfo(f *pb.FileDescriptorProto) (map[interface{}]*pb.SourceCodeInfo_Location, error) {
  	if f.SourceCodeInfo == nil {
  		return nil, nil
  	}
  	ret := make(map[interface{}]*pb.SourceCodeInfo_Location, len(f.SourceCodeInfo.Location))
  	for _, loc := range f.SourceCodeInfo.Location {
  		ptr, err := At(f, loc.Path)
  		switch v := reflect.ValueOf(ptr); {
  		case err != nil:
  			return nil, err
  		case !v.IsValid():
  		case v.Kind() == reflect.Slice:
  			// A slice cannot be used as a map key.
  			// Whole slice declarations are not supported.
  		default:
  			ret[ptr] = loc
  		}
  	}
  	return ret, nil
  }
docs: // IndexSourceCodeInfo returns a map that maps a pointer to the associated
  // source code info, where the pointer points to a descriptor proto or its
  // field, e.g. &myFieldDescriptorProto.Name.
  //
  // IndexSourceCodeInfo can be used to retrieve comments.
  //
  // Does not support whole-slice locations.