code: public void configure(TNorm conjunction, SNorm disjunction,
              TNorm implication, SNorm aggregation,
              Defuzzifier defuzzifier, Activation activation) {
          try {
              for (RuleBlock ruleblock : this.ruleBlocks) {
                  ruleblock.setConjunction(conjunction == null ? null : conjunction.clone());
                  ruleblock.setDisjunction(disjunction == null ? null : disjunction.clone());
                  ruleblock.setImplication(implication == null ? null : implication.clone());
                  ruleblock.setActivation(activation == null ? new General() : activation.clone());
              }
              for (OutputVariable outputVariable : this.outputVariables) {
                  outputVariable.setDefuzzifier(defuzzifier == null ? null : defuzzifier.clone());
                  outputVariable.setAggregation(aggregation == null ? null : aggregation.clone());
              }
          } catch (Exception ex) {
              throw new RuntimeException(ex);
          }
      }
docs: Configures the engine with clones of the given operators.
  
  @param conjunction is the operator to process the propositions joined by
  `and` in the antecedent of the rules
  @param disjunction is the operator to process the propositions joined by
  `or` in the antecedent of the rules
  @param implication is the operator to modify the consequents of the rules
  based on the activation degree of the antecedents of the rules
  @param aggregation is the operator to aggregate the resulting implications
  of the rules
  @param defuzzifier is the operator to transform the aggregated implications
  into a single scalar value
  @param activation is the activation method to activate and trigger the rule
  blocks