VarianceFn extends Combine.CombineFn<T, VarianceAccumulator, T> { @Override public Coder<VarianceAccumulator> getAccumulatorCoder( CoderRegistry registry, Coder<T> inputCoder) { return SerializableCoder.of(VarianceAccumulator.class); } private  VarianceFn(boolean isSample, SerializableFunction<BigDecimal, T> decimalConverter); static VarianceFn newPopulation(Schema.TypeName typeName); static VarianceFn newPopulation(
      SerializableFunction<BigDecimal, V> decimalConverter); static VarianceFn newSample(Schema.TypeName typeName); static VarianceFn newSample(
      SerializableFunction<BigDecimal, V> decimalConverter); @Override VarianceAccumulator createAccumulator(); @Override VarianceAccumulator addInput(VarianceAccumulator currentVariance, T rawInput); @Override VarianceAccumulator mergeAccumulators(Iterable<VarianceAccumulator> variances); @Override Coder<VarianceAccumulator> getAccumulatorCoder(
      CoderRegistry registry, Coder<T> inputCoder); @Override T extractOutput(VarianceAccumulator accumulator);  }
@Test public void testCeatesAccumulatorCoder() { assertNotNull(varianceFn.getAccumulatorCoder(CoderRegistry.createDefault(), VarIntCoder.of())); }