code: @Override
    public GallicWeight times(GallicWeight a, GallicWeight b) {
      if (isZero(a) || isZero(b)) {
        return zero;
      }
      IntArrayList newOutputLabels = new IntArrayList();
      newOutputLabels.addAll(a.getLabels());
      newOutputLabels.addAll(b.getLabels());
      double newWeight = this.weightSemiring.times(a.getWeight(), b.getWeight());
      return GallicWeight.create(newOutputLabels, newWeight);
    }
docs: Gallic times is string subring times (concat) x primitive semiring times
  @param a first
  @param b second
  @return first times second