class RegraSomatorio extends RegraExpressao {

    @Override
    public final Valor avalie(final List<Avaliavel> avaliaveis,
                        final Map<String, Valor> contexto) {
        float somatorio = 0f;

        for (Avaliavel avaliavel : avaliaveis) {
            // Considera apenas avaliáveis da classe em questão
            Valor atributo = avaliavel.get("classe");
            String classe = atributo == null ? null : atributo.getString();

            if (!this.classe.equals(classe)) {
                continue;
            }

            // Atualiza contexto da expressão com dados do avaliável
            for (String dd : ctx.keySet()) {
                ctx.put(dd, prioridade(dd, avaliavel, contexto));
            }

            somatorio = somatorio + ast.valor(ctx);
        }

        return new Valor(somatorio);
    }

    public  RegraSomatorio(
            final String variavel,
            final String descricao,
            final float valorMaximo,
            final float valorMinimo,
            final String expressao,
            final String nomeClasse);

}