ClassMetadataCache.java

1
package com.ancientprogramming.fixedformat4j.format.impl;
2
3
import com.ancientprogramming.fixedformat4j.annotation.Field;
4
import com.ancientprogramming.fixedformat4j.annotation.Fields;
5
import com.ancientprogramming.fixedformat4j.annotation.Record;
6
import com.ancientprogramming.fixedformat4j.format.FixedFormatter;
7
import com.ancientprogramming.fixedformat4j.format.FormatContext;
8
import com.ancientprogramming.fixedformat4j.format.FormatInstructions;
9
10
import java.lang.invoke.MethodHandle;
11
import java.lang.invoke.MethodHandles;
12
import java.lang.reflect.Method;
13
import java.util.ArrayList;
14
import java.util.Collections;
15
import java.util.List;
16
17
import static com.ancientprogramming.fixedformat4j.format.FixedFormatUtil.getFixedFormatterInstance;
18
import static java.lang.String.format;
19
20
/**
21
 * JVM-level cache of per-class field metadata ({@link FieldDescriptor} lists).
22
 *
23
 * <p>The first call to {@link #get} for a class scans its annotations and builds one
24
 * {@link FieldDescriptor} per effective {@code @Field}. Subsequent calls return the same
25
 * immutable list without re-scanning.
26
 *
27
 * <p>Thread safety: {@link ClassValue} guarantees that {@link #build} runs at most once per
28
 * class key. Helper objects ({@link AnnotationScanner}, {@link FormatInstructionsBuilder},
29
 * {@link RepeatingFieldSupport}) are created as local variables inside {@code build} so that
30
 * concurrent builds of different classes never share mutable state.
31
 *
32
 * <p>Classloader safety: values are stored inside each {@link Class} object via {@link ClassValue},
33
 * so they are automatically eligible for GC once the defining classloader becomes unreachable.
34
 * This prevents classloader leaks in hot-reload and multi-classloader environments.
35
 *
36
 * @author Jacob von Eyben - <a href="https://eybenconsult.com">https://eybenconsult.com</a>
37
 * @since 1.7.0
38
 */
39
class ClassMetadataCache {
40
41
  static final ClassMetadataCache INSTANCE = new ClassMetadataCache();
42
43 3 1. <init> : Removed assignment to member variable cache → KILLED
2. <init> : Removed assignment to member variable this$0 → KILLED
3. <init> : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache$1::<init> → KILLED
  private final ClassValue<List<FieldDescriptor>> cache = new ClassValue<List<FieldDescriptor>>() {
44
    @Override
45
    protected List<FieldDescriptor> computeValue(Class<?> clazz) {
46 2 1. computeValue : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::build → KILLED
2. computeValue : replaced return value with Collections.emptyList for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache$1::computeValue → KILLED
      return build(clazz);
47
    }
48
  };
49
50
  List<FieldDescriptor> get(Class<?> clazz) {
51 2 1. get : removed call to java/lang/ClassValue::get → KILLED
2. get : replaced return value with Collections.emptyList for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::get → KILLED
    return cache.get(clazz);
52
  }
53
54
  private List<FieldDescriptor> build(Class<?> clazz) {
55 1 1. build : removed call to com/ancientprogramming/fixedformat4j/format/impl/AnnotationScanner::<init> → KILLED
    AnnotationScanner scanner = new AnnotationScanner();
56 1 1. build : removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::<init> → KILLED
    FormatInstructionsBuilder instructionsBuilder = new FormatInstructionsBuilder();
57 1 1. build : removed call to com/ancientprogramming/fixedformat4j/format/impl/RepeatingFieldSupport::<init> → KILLED
    RepeatingFieldSupport repeatingFieldSupport = new RepeatingFieldSupport();
58
59 1 1. build : removed call to java/util/ArrayList::<init> → KILLED
    List<FieldDescriptor> result = new ArrayList<>();
60 1 1. build : removed call to com/ancientprogramming/fixedformat4j/format/impl/AnnotationScanner::scan → KILLED
    for (AnnotationTarget target : scanner.scan(clazz)) {
61 1 1. build : removed call to java/lang/reflect/AnnotatedElement::getAnnotation → KILLED
      Field fieldAnnotation = target.annotationSource.getAnnotation(Field.class);
62 1 1. build : removed call to java/lang/reflect/AnnotatedElement::getAnnotation → KILLED
      Fields fieldsAnnotation = target.annotationSource.getAnnotation(Fields.class);
63 3 1. build : removed conditional - replaced equality check with false → KILLED
2. build : negated conditional → KILLED
3. build : removed conditional - replaced equality check with true → KILLED
      if (fieldAnnotation != null) {
64 3 1. build : Substituted 1 with 0 → KILLED
2. build : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::buildDescriptor → KILLED
3. build : removed call to java/util/List::add → KILLED
        result.add(buildDescriptor(clazz, target, fieldAnnotation, true, scanner, instructionsBuilder, repeatingFieldSupport));
65 3 1. build : removed conditional - replaced equality check with true → SURVIVED
2. build : negated conditional → KILLED
3. build : removed conditional - replaced equality check with false → KILLED
      } else if (fieldsAnnotation != null) {
66 1 1. build : removed call to com/ancientprogramming/fixedformat4j/annotation/Fields::value → KILLED
        Field[] fields = fieldsAnnotation.value();
67 5 1. build : changed conditional boundary → KILLED
2. build : negated conditional → KILLED
3. build : removed conditional - replaced comparison check with true → KILLED
4. build : Substituted 0 with 1 → KILLED
5. build : removed conditional - replaced comparison check with false → KILLED
        for (int i = 0; i < fields.length; i++) {
68 7 1. build : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::buildDescriptor → KILLED
2. build : removed call to java/util/List::add → KILLED
3. build : Substituted 0 with 1 → KILLED
4. build : removed conditional - replaced equality check with true → KILLED
5. build : Substituted 1 with 0 → KILLED
6. build : removed conditional - replaced equality check with false → KILLED
7. build : negated conditional → KILLED
          result.add(buildDescriptor(clazz, target, fields[i], i == 0, scanner, instructionsBuilder, repeatingFieldSupport));
69
        }
70
      }
71
    }
72 3 1. build : replaced call to java/util/Collections::unmodifiableList with argument → SURVIVED
2. build : removed call to java/util/Collections::unmodifiableList → KILLED
3. build : replaced return value with Collections.emptyList for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::build → KILLED
    return Collections.unmodifiableList(result);
73
  }
74
75
  @SuppressWarnings({"unchecked", "rawtypes"})
76
  private FieldDescriptor buildDescriptor(
77
      Class<?> clazz,
78
      AnnotationTarget target,
79
      Field fieldAnnotation,
80
      boolean isLoadField,
81
      AnnotationScanner scanner,
82
      FormatInstructionsBuilder instructionsBuilder,
83
      RepeatingFieldSupport repeatingFieldSupport) {
84
85 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::datatype → KILLED
    Class<?> datatype = instructionsBuilder.datatype(target.getter, fieldAnnotation);
86 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/RepeatingFieldSupport::validateCount → KILLED
    repeatingFieldSupport.validateCount(target.getter, fieldAnnotation);
87 8 1. buildDescriptor : removed conditional - replaced comparison check with true → KILLED
2. buildDescriptor : negated conditional → KILLED
3. buildDescriptor : Substituted 1 with 0 → KILLED
4. buildDescriptor : Substituted 0 with 1 → KILLED
5. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/annotation/Field::count → KILLED
6. buildDescriptor : removed conditional - replaced comparison check with false → KILLED
7. buildDescriptor : changed conditional boundary → KILLED
8. buildDescriptor : Substituted 1 with 0 → KILLED
    boolean isRepeating = fieldAnnotation.count() > 1;
88 6 1. buildDescriptor : removed conditional - replaced equality check with false → KILLED
2. buildDescriptor : removed conditional - replaced equality check with true → KILLED
3. buildDescriptor : Substituted 0 with 1 → KILLED
4. buildDescriptor : Substituted 1 with 0 → KILLED
5. buildDescriptor : negated conditional → KILLED
6. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/annotation/Field::formatter → KILLED
    boolean hasCustomFormatter = fieldAnnotation.formatter() != ByTypeFormatter.class;
89 12 1. buildDescriptor : removed conditional - replaced equality check with true → SURVIVED
2. buildDescriptor : negated conditional → KILLED
3. buildDescriptor : removed conditional - replaced equality check with false → KILLED
4. buildDescriptor : removed conditional - replaced equality check with true → KILLED
5. buildDescriptor : negated conditional → KILLED
6. buildDescriptor : Substituted 0 with 1 → KILLED
7. buildDescriptor : removed call to java/lang/Class::getAnnotation → KILLED
8. buildDescriptor : removed conditional - replaced equality check with false → KILLED
9. buildDescriptor : negated conditional → KILLED
10. buildDescriptor : removed conditional - replaced equality check with true → KILLED
11. buildDescriptor : removed conditional - replaced equality check with false → KILLED
12. buildDescriptor : Substituted 1 with 0 → KILLED
    boolean isNestedRecord = !isRepeating && !hasCustomFormatter && datatype.getAnnotation(Record.class) != null;
90
91 4 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::context → KILLED
2. buildDescriptor : negated conditional → KILLED
3. buildDescriptor : removed conditional - replaced equality check with false → KILLED
4. buildDescriptor : removed conditional - replaced equality check with true → KILLED
    FormatContext<?> context = isRepeating ? null : instructionsBuilder.context(datatype, fieldAnnotation);
92 4 1. buildDescriptor : negated conditional → KILLED
2. buildDescriptor : removed conditional - replaced equality check with true → KILLED
3. buildDescriptor : removed conditional - replaced equality check with false → KILLED
4. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::build → KILLED
    FormatInstructions formatInstructions = isRepeating ? null : instructionsBuilder.build(target.annotationSource, fieldAnnotation, datatype, clazz);
93 6 1. buildDescriptor : removed conditional - replaced equality check with true → KILLED
2. buildDescriptor : negated conditional → KILLED
3. buildDescriptor : removed conditional - replaced equality check with false → KILLED
4. buildDescriptor : negated conditional → KILLED
5. buildDescriptor : removed conditional - replaced equality check with false → KILLED
6. buildDescriptor : removed conditional - replaced equality check with true → KILLED
    FixedFormatter<?> formatter = (isRepeating || isNestedRecord) ? null
94 2 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/FixedFormatUtil::getFixedFormatterInstance → KILLED
2. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/FormatContext::getFormatter → KILLED
        : getFixedFormatterInstance(context.getFormatter(), context);
95
96 2 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveSetter → KILLED
2. buildDescriptor : replaced call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveSetter with argument → KILLED
    Method setter = resolveSetter(clazz, target.getter, datatype, scanner);
97 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::toHandle → KILLED
    MethodHandle setterHandle = toHandle(setter);
98
99 2 1. buildDescriptor : replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::buildDescriptor → KILLED
2. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/FieldDescriptor::<init> → KILLED
    return new FieldDescriptor(target, setter, setterHandle, fieldAnnotation, datatype, context,
100
        formatInstructions, formatter, isRepeating, isNestedRecord, isLoadField);
101
  }
102
103
  private Method resolveSetter(Class<?> clazz, Method getter, Class<?> datatype, AnnotationScanner scanner) {
104 3 1. resolveSetter : replaced call to com/ancientprogramming/fixedformat4j/format/impl/AnnotationScanner::stripMethodPrefix with argument → KILLED
2. resolveSetter : removed call to com/ancientprogramming/fixedformat4j/format/impl/AnnotationScanner::stripMethodPrefix → KILLED
3. resolveSetter : removed call to java/lang/reflect/Method::getName → KILLED
    String setterName = "set" + scanner.stripMethodPrefix(getter.getName());
105
    try {
106 4 1. resolveSetter : removed call to java/lang/Class::getMethod → KILLED
2. resolveSetter : Substituted 0 with 1 → KILLED
3. resolveSetter : replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveSetter → KILLED
4. resolveSetter : Substituted 1 with 0 → KILLED
      return clazz.getMethod(setterName, datatype);
107
    } catch (NoSuchMethodException e) {
108
      return null;
109
    }
110
  }
111
112
  private MethodHandle toHandle(Method method) {
113 3 1. toHandle : removed conditional - replaced equality check with true → KILLED
2. toHandle : negated conditional → KILLED
3. toHandle : removed conditional - replaced equality check with false → KILLED
    if (method == null) return null;
114
    try {
115 3 1. toHandle : removed call to java/lang/invoke/MethodHandles$Lookup::unreflect → KILLED
2. toHandle : replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::toHandle → KILLED
3. toHandle : removed call to java/lang/invoke/MethodHandles::lookup → KILLED
      return MethodHandles.lookup().unreflect(method);
116
    } catch (IllegalAccessException e) {
117 5 1. toHandle : Substituted 0 with 1 → NO_COVERAGE
2. toHandle : removed call to java/lang/String::format → NO_COVERAGE
3. toHandle : replaced call to java/lang/String::format with argument → NO_COVERAGE
4. toHandle : Substituted 1 with 0 → NO_COVERAGE
5. toHandle : removed call to java/lang/RuntimeException::<init> → NO_COVERAGE
      throw new RuntimeException(format("Cannot create MethodHandle for %s", method), e);
118
    }
119
  }
120
}

Mutations

43

1.1
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
Removed assignment to member variable cache → KILLED

2.2
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
Removed assignment to member variable this$0 → KILLED

3.3
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache$1::<init> → KILLED

46

1.1
Location : computeValue
Killed by : com.ancientprogramming.fixedformat4j.issues.TestLombokFieldAnnotations.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.issues.TestLombokFieldAnnotations]/[method:testNoGetter_throwsFixedFormatException()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::build → KILLED

2.2
Location : computeValue
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
replaced return value with Collections.emptyList for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache$1::computeValue → KILLED

51

1.1
Location : get
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to java/lang/ClassValue::get → KILLED

2.2
Location : get
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
replaced return value with Collections.emptyList for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::get → KILLED

55

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/AnnotationScanner::<init> → KILLED

56

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::<init> → KILLED

57

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/RepeatingFieldSupport::<init> → KILLED

59

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to java/util/ArrayList::<init> → KILLED

60

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/AnnotationScanner::scan → KILLED

61

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to java/lang/reflect/AnnotatedElement::getAnnotation → KILLED

62

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
removed call to java/lang/reflect/AnnotatedElement::getAnnotation → KILLED

63

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
negated conditional → KILLED

3.3
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
removed conditional - replaced equality check with true → KILLED

64

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:allSimpleFieldDescriptorsAreMarkedAsLoadFields()]
Substituted 1 with 0 → KILLED

2.2
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::buildDescriptor → KILLED

3.3
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to java/util/List::add → KILLED

65

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
negated conditional → KILLED

2.2
Location : build
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

3.3
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
removed conditional - replaced equality check with false → KILLED

66

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
removed call to com/ancientprogramming/fixedformat4j/annotation/Fields::value → KILLED

67

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
changed conditional boundary → KILLED

2.2
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
negated conditional → KILLED

3.3
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
removed conditional - replaced comparison check with true → KILLED

4.4
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
Substituted 0 with 1 → KILLED

5.5
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
removed conditional - replaced comparison check with false → KILLED

68

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::buildDescriptor → KILLED

2.2
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldsAnnotationExpandsIntoMultipleDescriptors()]
removed call to java/util/List::add → KILLED

3.3
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
Substituted 0 with 1 → KILLED

4.4
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
removed conditional - replaced equality check with true → KILLED

5.5
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
Substituted 1 with 0 → KILLED

6.6
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
removed conditional - replaced equality check with false → KILLED

7.7
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
negated conditional → KILLED

72

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to java/util/Collections::unmodifiableList → KILLED

2.2
Location : build
Killed by : none
replaced call to java/util/Collections::unmodifiableList with argument → SURVIVED
Covering tests

3.3
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
replaced return value with Collections.emptyList for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::build → KILLED

85

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::datatype → KILLED

86

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestRepeatingField.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestRepeatingField]/[method:testCountOneWithArrayTypeThrows()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/RepeatingFieldSupport::validateCount → KILLED

87

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
removed conditional - replaced comparison check with true → KILLED

2.2
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
negated conditional → KILLED

3.3
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
Substituted 1 with 0 → KILLED

4.4
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
Substituted 0 with 1 → KILLED

5.5
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to com/ancientprogramming/fixedformat4j/annotation/Field::count → KILLED

6.6
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed conditional - replaced comparison check with false → KILLED

7.7
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
changed conditional boundary → KILLED

8.8
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
Substituted 1 with 0 → KILLED

88

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
removed conditional - replaced equality check with false → KILLED

2.2
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
removed conditional - replaced equality check with true → KILLED

3.3
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
Substituted 0 with 1 → KILLED

4.4
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
Substituted 1 with 0 → KILLED

5.5
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
negated conditional → KILLED

6.6
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
removed call to com/ancientprogramming/fixedformat4j/annotation/Field::formatter → KILLED

89

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
negated conditional → KILLED

2.2
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
removed conditional - replaced equality check with false → KILLED

3.3
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:eachSimpleFieldDescriptorHasNonNullMetadata()]
removed conditional - replaced equality check with true → KILLED

4.4
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
negated conditional → KILLED

5.5
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
Substituted 0 with 1 → KILLED

6.6
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
removed call to java/lang/Class::getAnnotation → KILLED

7.7
Location : buildDescriptor
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

8.8
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
removed conditional - replaced equality check with false → KILLED

9.9
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
negated conditional → KILLED

10.10
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
removed conditional - replaced equality check with true → KILLED

11.11
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
removed conditional - replaced equality check with false → KILLED

12.12
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
Substituted 1 with 0 → KILLED

91

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::context → KILLED

2.2
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
negated conditional → KILLED

3.3
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed conditional - replaced equality check with false → KILLED

4.4
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
removed conditional - replaced equality check with true → KILLED

92

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
negated conditional → KILLED

2.2
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
removed conditional - replaced equality check with true → KILLED

3.3
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed conditional - replaced equality check with false → KILLED

4.4
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::build → KILLED

93

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
negated conditional → KILLED

3.3
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
removed conditional - replaced equality check with false → KILLED

4.4
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
negated conditional → KILLED

5.5
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:nestedRecordFieldDescriptorHasNullFormatter()]
removed conditional - replaced equality check with false → KILLED

6.6
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed conditional - replaced equality check with true → KILLED

94

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
removed call to com/ancientprogramming/fixedformat4j/format/FixedFormatUtil::getFixedFormatterInstance → KILLED

2.2
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
removed call to com/ancientprogramming/fixedformat4j/format/FormatContext::getFormatter → KILLED

96

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:eachSimpleFieldDescriptorHasNonNullMetadata()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveSetter → KILLED

2.2
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassloaderLeak.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassloaderLeak]/[method:cachedRecordClassIsGcEligibleAfterLoaderRelease()]
replaced call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveSetter with argument → KILLED

97

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:eachSimpleFieldDescriptorHasNonNullMetadata()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::toHandle → KILLED

99

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::buildDescriptor → KILLED

2.2
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/FieldDescriptor::<init> → KILLED

104

1.1
Location : resolveSetter
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:eachSimpleFieldDescriptorHasNonNullMetadata()]
replaced call to com/ancientprogramming/fixedformat4j/format/impl/AnnotationScanner::stripMethodPrefix with argument → KILLED

2.2
Location : resolveSetter
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:eachSimpleFieldDescriptorHasNonNullMetadata()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/AnnotationScanner::stripMethodPrefix → KILLED

3.3
Location : resolveSetter
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to java/lang/reflect/Method::getName → KILLED

106

1.1
Location : resolveSetter
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:eachSimpleFieldDescriptorHasNonNullMetadata()]
removed call to java/lang/Class::getMethod → KILLED

2.2
Location : resolveSetter
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
Substituted 0 with 1 → KILLED

3.3
Location : resolveSetter
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:eachSimpleFieldDescriptorHasNonNullMetadata()]
replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveSetter → KILLED

4.4
Location : resolveSetter
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
Substituted 1 with 0 → KILLED

113

1.1
Location : toHandle
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:eachSimpleFieldDescriptorHasNonNullMetadata()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : toHandle
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
negated conditional → KILLED

3.3
Location : toHandle
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:fieldWithCustomFormatterIsNotMarkedAsNestedRecord()]
removed conditional - replaced equality check with false → KILLED

115

1.1
Location : toHandle
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:eachSimpleFieldDescriptorHasNonNullMetadata()]
removed call to java/lang/invoke/MethodHandles$Lookup::unreflect → KILLED

2.2
Location : toHandle
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:eachSimpleFieldDescriptorHasNonNullMetadata()]
replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::toHandle → KILLED

3.3
Location : toHandle
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorHasNullContextAndInstructions()]
removed call to java/lang/invoke/MethodHandles::lookup → KILLED

117

1.1
Location : toHandle
Killed by : none
Substituted 0 with 1 → NO_COVERAGE

2.2
Location : toHandle
Killed by : none
removed call to java/lang/String::format → NO_COVERAGE

3.3
Location : toHandle
Killed by : none
replaced call to java/lang/String::format with argument → NO_COVERAGE

4.4
Location : toHandle
Killed by : none
Substituted 1 with 0 → NO_COVERAGE

5.5
Location : toHandle
Killed by : none
removed call to java/lang/RuntimeException::<init> → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.23.1 support