test_class.file: mubench/src/test/java/de/tu_darmstadt/stg/mudetect/ranking/ProductWeightFunctionTest.java
test_class.identifier: ProductWeightFunctionTest
test_case.body: @Test
      public void multipliesWeights() {
          Overlap instance = someOverlap();
          Overlaps overlaps = new Overlaps();
          Model model = () -> asSet(instance.getPattern());
  
          ProductWeightFunction weightFunction = new ProductWeightFunction(w((o, os, m) -> 0.5), w((o, os, m) -> 0.5));
  
          assertThat(weightFunction.getWeight(instance, overlaps, model), is(0.25));
      }
test_case.class_method_signature: ProductWeightFunctionTest.multipliesWeights()
test_case.full_signature: @Test public void multipliesWeights()
test_case.identifier: multipliesWeights
test_case.invocations: someOverlap asSet getPattern w w assertThat getWeight is
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void multipliesWeights()
focal_class.declarator: factors
focal_class.modifier: private final
focal_class.original_string: private final ViolationWeightFunction[] factors;
focal_class.type: ViolationWeightFunction[]
focal_class.var_name: factors
focal_class.file: mubench/src/main/java/de/tu_darmstadt/stg/mudetect/ranking/ProductWeightFunction.java
focal_class.identifier: ProductWeightFunction
focal_class.interfaces: implements ViolationWeightFunction
focal_class.class_method_signature: ProductWeightFunction.ProductWeightFunction(ViolationWeightFunction... factors)
focal_class.full_signature: public  ProductWeightFunction(ViolationWeightFunction... factors)
focal_class.identifier: ProductWeightFunction
focal_class.modifiers: public
focal_class.parameters: (ViolationWeightFunction... factors)
focal_class.signature:  ProductWeightFunction(ViolationWeightFunction... factors)
focal_class.class_method_signature: ProductWeightFunction.getWeight(Overlap violation, Overlaps overlaps, Model model)
focal_class.full_signature: @Override public double getWeight(Overlap violation, Overlaps overlaps, Model model)
focal_class.identifier: getWeight
focal_class.modifiers: @Override public
focal_class.parameters: (Overlap violation, Overlaps overlaps, Model model)
focal_class.return: double
focal_class.signature: double getWeight(Overlap violation, Overlaps overlaps, Model model)
focal_class.class_method_signature: ProductWeightFunction.getFormula(Overlap violation, Overlaps overlaps, Model model)
focal_class.full_signature: @Override public String getFormula(Overlap violation, Overlaps overlaps, Model model)
focal_class.identifier: getFormula
focal_class.modifiers: @Override public
focal_class.parameters: (Overlap violation, Overlaps overlaps, Model model)
focal_class.return: String
focal_class.signature: String getFormula(Overlap violation, Overlaps overlaps, Model model)
focal_class.class_method_signature: ProductWeightFunction.getId()
focal_class.full_signature: @Override public String getId()
focal_class.identifier: getId
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getId()
focal_method.body: @Override
      public double getWeight(Overlap violation, Overlaps overlaps, Model model) {
          return Arrays.stream(factors)
                  .mapToDouble(factor -> factor.getWeight(violation, overlaps, model))
                  .reduce(1, (a, b) -> a * b);
      }
focal_method.class_method_signature: ProductWeightFunction.getWeight(Overlap violation, Overlaps overlaps, Model model)
focal_method.full_signature: @Override public double getWeight(Overlap violation, Overlaps overlaps, Model model)
focal_method.identifier: getWeight
focal_method.invocations: reduce mapToDouble stream getWeight
focal_method.modifiers: @Override public
focal_method.parameters: (Overlap violation, Overlaps overlaps, Model model)
focal_method.return: double
focal_method.signature: double getWeight(Overlap violation, Overlaps overlaps, Model model)