@@ -0,0 +1,629 @@
+package no.ssb.vtl.script.operations.aggregation;%0A%0Aimport no.ssb.vtl.model.VTLNumber;%0Aimport no.ssb.vtl.model.VTLObject;%0Aimport no.ssb.vtl.model.VTLTyped;%0A%0Aimport java.util.List;%0Aimport java.util.function.Function;%0A%0Aimport static com.google.common.base.Preconditions.checkNotNull;%0A%0Apublic abstract class AbstractAggregationFunction%3CT extends VTLObject%3E implements VTLTyped%3CT%3E, Function%3CList%3CVTLNumber%3E, T%3E %7B%0A%0A    private final Class%3CT%3E clazz;%0A%0A    public AbstractAggregationFunction(Class%3CT%3E clazz) %7B%0A        this.clazz = checkNotNull(clazz);%0A    %7D%0A%0A    @Override%0A    public Class%3CT%3E getVTLType() %7B%0A        return clazz;%0A    %7D%0A%7D%0A

Add an abstract aggregation function to allow dynamic typing