class StdDevStateType extends DataType<StandardDeviation> implements Streamer<StandardDeviation>, FixedWidthType {

        public static final StdDevStateType INSTANCE = new StdDevStateType();
        public static final int ID = 8192;

        @Override
        public int id() {
            return ID;
        }

        @Override
        public Precedence precedence() {
            return Precedence.CUSTOM;
        }

        @Override
        public String getName() {
            return "stddev_state";
        }

        @Override
        public Streamer<StandardDeviation> streamer() {
            return this;
        }

        @Override
        public StandardDeviation sanitizeValue(Object value) {
            return (StandardDeviation) value;
        }

        @Override
        public int compare(StandardDeviation val1, StandardDeviation val2) {
            return val1.compareTo(val2);
        }

        @Override
        public int fixedSize() {
            return 56;
        }

        @Override
        public StandardDeviation readValueFrom(StreamInput in) throws IOException {
            return new StandardDeviation(in);
        }

        @Override
        public void writeValueTo(StreamOutput out, StandardDeviation v) throws IOException {
            v.writeTo(out);
        }

        @Override
        public long valueBytes(StandardDeviation value) {
            return fixedSize();
        }
    }

    private final Signature signature;
    private final BoundSignature boundSignature;

    public StandardDeviationAggregation(Signature signature, BoundSignature boundSignature) {
        this.signature = signature;
        this.boundSignature = boundSignature;
    }

    @Override
    public Signature signature() {
        return signature;
    }

    @Override
    public BoundSignature boundSignature() {
        return boundSignature;
    }

    @Nullable
    @Override
    public StandardDeviation newState(RamAccounting ramAccounting,
                                      Version indexVersionCreated,
                                      Version minNodeInCluster,
                                      MemoryManager memoryManager) {
        ramAccounting.addBytes(StdDevStateType.INSTANCE.fixedSize());
        return new StandardDeviation();
    }

    @Override
    public StandardDeviation iterate(RamAccounting ramAccounting,
                                     MemoryManager memoryManager,
                                     StandardDeviation state,
                                     Input<?>... args) throws CircuitBreakingException {<FILL_FUNCTION_BODY>

        if (state != null) {
            Number value = (Number) args[0].value();
            if (value != null) {
                state.increment(value.doubleValue());
            }
        }
        return state;
    
<methods>public non-sealed void <init>() ,public DocValueAggregator<?> getDocValueAggregator(io.crate.expression.reference.doc.lucene.LuceneReferenceResolver, List<io.crate.metadata.Reference>, io.crate.metadata.doc.DocTableInfo, List<Literal<?>>) ,public boolean isRemovableCumulative() ,public transient abstract io.crate.execution.engine.aggregation.statistics.StandardDeviation iterate(io.crate.data.breaker.RamAccounting, io.crate.memory.MemoryManager, io.crate.execution.engine.aggregation.statistics.StandardDeviation, Input<?>[]) throws org.elasticsearch.common.breaker.CircuitBreakingException,public abstract io.crate.execution.engine.aggregation.statistics.StandardDeviation newState(io.crate.data.breaker.RamAccounting, org.elasticsearch.Version, org.elasticsearch.Version, io.crate.memory.MemoryManager) ,public AggregationFunction<?,java.lang.Double> optimizeForExecutionAsWindowFunction() ,public abstract DataType<?> partialType() ,public abstract io.crate.execution.engine.aggregation.statistics.StandardDeviation reduce(io.crate.data.breaker.RamAccounting, io.crate.execution.engine.aggregation.statistics.StandardDeviation, io.crate.execution.engine.aggregation.statistics.StandardDeviation) ,public io.crate.execution.engine.aggregation.statistics.StandardDeviation removeFromAggregatedState(io.crate.data.breaker.RamAccounting, io.crate.execution.engine.aggregation.statistics.StandardDeviation, Input<?>[]) ,public abstract java.lang.Double terminatePartial(io.crate.data.breaker.RamAccounting, io.crate.execution.engine.aggregation.statistics.StandardDeviation) <variables>