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
import java.util.Map;
17
18
import static com.ancientprogramming.fixedformat4j.format.FixedFormatUtil.getFixedFormatterInstance;
19
import static java.lang.String.format;
20
21
/**
22
 * JVM-level cache of per-class field metadata ({@link FieldDescriptor} lists).
23
 *
24
 * <p>The first call to {@link #get} for a class scans its annotations and builds one
25
 * {@link FieldDescriptor} per effective {@code @Field}. Subsequent calls return the same
26
 * immutable list without re-scanning.
27
 *
28
 * <p>Thread safety: under contention {@link ClassValue} may invoke {@link #build} more than once
29
 * for the same class key, but installs and returns a single value; the redundant results are
30
 * discarded. This is harmless because {@code build} is pure — its helper objects
31
 * ({@link AnnotationScanner}, {@link FormatInstructionsBuilder}, {@link RepeatingFieldSupport})
32
 * are created as local variables, so concurrent builds never share mutable state.
33
 *
34
 * <p>Classloader safety: values are stored inside each {@link Class} object via {@link ClassValue},
35
 * so they are automatically eligible for GC once the defining classloader becomes unreachable.
36
 * This prevents classloader leaks in hot-reload and multi-classloader environments.
37
 *
38
 * @author Jacob von Eyben - <a href="https://eybenconsult.com">https://eybenconsult.com</a>
39
 * @since 1.7.0
40
 */
41
class ClassMetadataCache {
42
43
  static final ClassMetadataCache INSTANCE = new ClassMetadataCache(Collections.emptyMap());
44
45
  private final Map<Class<?>, Class<? extends com.ancientprogramming.fixedformat4j.format.FixedFormatter<?>>> customRegistry;
46
47
  ClassMetadataCache(Map<Class<?>, Class<? extends com.ancientprogramming.fixedformat4j.format.FixedFormatter<?>>> customRegistry) {
48 5 1. <init> : removed call to java/util/Collections::emptyMap → NO_COVERAGE
2. <init> : removed conditional - replaced equality check with true → SURVIVED
3. <init> : negated conditional → KILLED
4. <init> : Removed assignment to member variable customRegistry → KILLED
5. <init> : removed conditional - replaced equality check with false → KILLED
    this.customRegistry = customRegistry != null ? customRegistry : Collections.emptyMap();
49
  }
50
51
  /** Per-class metadata: the field descriptors plus, for Java records, the constructor binding. */
52
  private static final class ClassMetadata {
53
    final List<FieldDescriptor> descriptors;
54
    final ConstructorBinding constructorBinding;
55
56
    ClassMetadata(List<FieldDescriptor> descriptors, ConstructorBinding constructorBinding) {
57 1 1. <init> : Removed assignment to member variable descriptors → KILLED
      this.descriptors = descriptors;
58 1 1. <init> : Removed assignment to member variable constructorBinding → SURVIVED
      this.constructorBinding = constructorBinding;
59
    }
60
  }
61
62 3 1. <init> : Removed assignment to member variable cache → KILLED
2. <init> : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache$1::<init> → KILLED
3. <init> : Removed assignment to member variable this$0 → KILLED
  private final ClassValue<ClassMetadata> cache = new ClassValue<>() {
63
    @Override
64
    protected ClassMetadata computeValue(Class<?> clazz) {
65 1 1. computeValue : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::build → KILLED
      List<FieldDescriptor> descriptors = build(clazz);
66 4 1. computeValue : removed conditional - replaced equality check with false → SURVIVED
2. computeValue : removed call to com/ancientprogramming/fixedformat4j/format/impl/JavaRecordSupport::isJavaRecord → SURVIVED
3. computeValue : removed conditional - replaced equality check with true → KILLED
4. computeValue : negated conditional → KILLED
      ConstructorBinding binding = JavaRecordSupport.isJavaRecord(clazz)
67 1 1. computeValue : removed call to com/ancientprogramming/fixedformat4j/format/impl/ConstructorBinding::forRecord → NO_COVERAGE
          ? ConstructorBinding.forRecord(clazz, descriptors)
68
          : null;
69 2 1. computeValue : replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache$1::computeValue → KILLED
2. computeValue : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache$ClassMetadata::<init> → KILLED
      return new ClassMetadata(descriptors, binding);
70
    }
71
  };
72
73
  List<FieldDescriptor> get(Class<?> clazz) {
74 2 1. get : replaced return value with Collections.emptyList for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::get → KILLED
2. get : removed call to java/lang/ClassValue::get → KILLED
    return cache.get(clazz).descriptors;
75
  }
76
77
  /**
78
   * Returns the canonical-constructor binding for Java {@code record} classes, or
79
   * {@code null} for conventional setter-based classes.
80
   */
81
  ConstructorBinding constructorBinding(Class<?> clazz) {
82 2 1. constructorBinding : replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::constructorBinding → SURVIVED
2. constructorBinding : removed call to java/lang/ClassValue::get → KILLED
    return cache.get(clazz).constructorBinding;
83
  }
84
85
  private List<FieldDescriptor> build(Class<?> clazz) {
86 1 1. build : removed call to com/ancientprogramming/fixedformat4j/format/impl/AnnotationScanner::<init> → KILLED
    AnnotationScanner scanner = new AnnotationScanner();
87 1 1. build : removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::<init> → KILLED
    FormatInstructionsBuilder instructionsBuilder = new FormatInstructionsBuilder();
88 1 1. build : removed call to com/ancientprogramming/fixedformat4j/format/impl/RepeatingFieldSupport::<init> → KILLED
    RepeatingFieldSupport repeatingFieldSupport = new RepeatingFieldSupport();
89
90 1 1. build : removed call to java/util/ArrayList::<init> → KILLED
    List<FieldDescriptor> result = new ArrayList<>();
91 1 1. build : removed call to com/ancientprogramming/fixedformat4j/format/impl/AnnotationScanner::scan → KILLED
    for (AnnotationTarget target : scanner.scan(clazz)) {
92 1 1. build : removed call to java/lang/reflect/AnnotatedElement::getAnnotation → KILLED
      Field fieldAnnotation = target.annotationSource.getAnnotation(Field.class);
93 1 1. build : removed call to java/lang/reflect/AnnotatedElement::getAnnotation → KILLED
      Fields fieldsAnnotation = target.annotationSource.getAnnotation(Fields.class);
94 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) {
95 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));
96 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) {
97 1 1. build : removed call to com/ancientprogramming/fixedformat4j/annotation/Fields::value → KILLED
        Field[] fields = fieldsAnnotation.value();
98 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++) {
99 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));
100
        }
101
      }
102
    }
103 2 1. build : removed call to java/util/List::copyOf → KILLED
2. build : replaced return value with Collections.emptyList for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::build → KILLED
    return List.copyOf(result);
104
  }
105
106
  @SuppressWarnings({"unchecked", "rawtypes"})
107
  private FieldDescriptor buildDescriptor(
108
      Class<?> clazz,
109
      AnnotationTarget target,
110
      Field fieldAnnotation,
111
      boolean isLoadField,
112
      AnnotationScanner scanner,
113
      FormatInstructionsBuilder instructionsBuilder,
114
      RepeatingFieldSupport repeatingFieldSupport) {
115
116 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::datatype → KILLED
    Class<?> datatype = instructionsBuilder.datatype(target.getter, fieldAnnotation);
117 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/RepeatingFieldSupport::validateCount → KILLED
    repeatingFieldSupport.validateCount(target.getter, fieldAnnotation);
118 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;
119 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;
120 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;
121
122 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);
123 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::toHandle → KILLED
    MethodHandle setterHandle = toHandle(setter);
124
125 3 1. buildDescriptor : negated conditional → KILLED
2. buildDescriptor : removed conditional - replaced equality check with false → KILLED
3. buildDescriptor : removed conditional - replaced equality check with true → KILLED
    if (isRepeating) {
126 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/RepeatingFieldSupport::resolveElementType → KILLED
      Class<?> elementType = repeatingFieldSupport.resolveElementType(target.getter);
127 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::build → KILLED
      FormatInstructions formatInstructions = instructionsBuilder.build(target.annotationSource, fieldAnnotation, elementType, clazz);
128 3 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/annotation/Field::offset → SURVIVED
2. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/FormatContext::<init> → KILLED
3. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/annotation/Field::formatter → KILLED
      FormatContext protoContext = new FormatContext(fieldAnnotation.offset(), elementType, fieldAnnotation.formatter());
129
      // Deliberately NOT unwrapped via resolveConcreteFormatter: ByTypeFormatter resolves its
130
      // delegate lazily, keeping the unsupported-element-type failure at parse time
131
      // (wrapped in ParseException) exactly as before metadata caching. The custom registry is
132
      // passed so registered element types resolve in repeating fields too.
133 4 1. buildDescriptor : removed conditional - replaced equality check with true → SURVIVED
2. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/FormatContext::getFormatter → KILLED
3. buildDescriptor : negated conditional → KILLED
4. buildDescriptor : removed conditional - replaced equality check with false → KILLED
      FixedFormatter<?> formatter = protoContext.getFormatter() == ByTypeFormatter.class
134 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/ByTypeFormatter::<init> → KILLED
          ? new ByTypeFormatter(protoContext, customRegistry)
135 2 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/FixedFormatUtil::getFixedFormatterInstance → NO_COVERAGE
2. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/FormatContext::getFormatter → NO_COVERAGE
          : getFixedFormatterInstance(protoContext.getFormatter(), protoContext);
136 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/annotation/Field::count → KILLED
      FormatContext<?>[] elementContexts = new FormatContext[fieldAnnotation.count()];
137 5 1. buildDescriptor : changed conditional boundary → KILLED
2. buildDescriptor : removed conditional - replaced comparison check with false → KILLED
3. buildDescriptor : Substituted 0 with 1 → KILLED
4. buildDescriptor : negated conditional → KILLED
5. buildDescriptor : removed conditional - replaced comparison check with true → KILLED
      for (int i = 0; i < elementContexts.length; i++) {
138 6 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/annotation/Field::formatter → SURVIVED
2. buildDescriptor : Replaced integer multiplication with division → KILLED
3. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/FormatContext::<init> → KILLED
4. buildDescriptor : Replaced integer addition with subtraction → KILLED
5. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/annotation/Field::length → KILLED
6. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/annotation/Field::offset → KILLED
        elementContexts[i] = new FormatContext(fieldAnnotation.offset() + fieldAnnotation.length() * i, elementType, fieldAnnotation.formatter());
139
      }
140 4 1. buildDescriptor : Substituted 0 with 1 → SURVIVED
2. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/FieldDescriptor::<init> → KILLED
3. buildDescriptor : replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::buildDescriptor → KILLED
4. buildDescriptor : Substituted 1 with 0 → KILLED
      return new FieldDescriptor(target, setter, setterHandle, fieldAnnotation, datatype, null,
141
          formatInstructions, formatter, true, false, isLoadField, elementType, elementContexts);
142
    }
143
144 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::context → KILLED
    FormatContext<?> context = instructionsBuilder.context(datatype, fieldAnnotation);
145 1 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/FormatInstructionsBuilder::build → KILLED
    FormatInstructions formatInstructions = instructionsBuilder.build(target.annotationSource, fieldAnnotation, datatype, clazz);
146 3 1. buildDescriptor : negated conditional → KILLED
2. buildDescriptor : removed conditional - replaced equality check with false → KILLED
3. buildDescriptor : removed conditional - replaced equality check with true → KILLED
    FixedFormatter<?> rawFormatter = isNestedRecord ? null
147 2 1. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/FormatContext::getFormatter → KILLED
2. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/FixedFormatUtil::getFixedFormatterInstance → KILLED
        : getFixedFormatterInstance(context.getFormatter(), context);
148 2 1. buildDescriptor : replaced call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveConcreteFormatter with argument → KILLED
2. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveConcreteFormatter → KILLED
    FixedFormatter<?> formatter = resolveConcreteFormatter(rawFormatter, datatype);
149
150 3 1. buildDescriptor : Substituted 0 with 1 → KILLED
2. buildDescriptor : removed call to com/ancientprogramming/fixedformat4j/format/impl/FieldDescriptor::<init> → KILLED
3. buildDescriptor : replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::buildDescriptor → KILLED
    return new FieldDescriptor(target, setter, setterHandle, fieldAnnotation, datatype, context,
151
        formatInstructions, formatter, false, isNestedRecord, isLoadField, null, null);
152
  }
153
154
  private FixedFormatter<?> resolveConcreteFormatter(FixedFormatter<?> candidate, Class<?> datatype) {
155 3 1. resolveConcreteFormatter : negated conditional → KILLED
2. resolveConcreteFormatter : removed conditional - replaced equality check with false → KILLED
3. resolveConcreteFormatter : removed conditional - replaced equality check with true → KILLED
    if (candidate instanceof ByTypeFormatter) {
156 2 1. resolveConcreteFormatter : removed call to com/ancientprogramming/fixedformat4j/format/impl/ByTypeFormatter::getContext → SURVIVED
2. resolveConcreteFormatter : removed call to com/ancientprogramming/fixedformat4j/format/impl/ByTypeFormatter::<init> → KILLED
      ByTypeFormatter btf = new ByTypeFormatter(((ByTypeFormatter) candidate).getContext(), customRegistry);
157 2 1. resolveConcreteFormatter : removed call to com/ancientprogramming/fixedformat4j/format/impl/ByTypeFormatter::actualFormatter → KILLED
2. resolveConcreteFormatter : replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveConcreteFormatter → KILLED
      return btf.actualFormatter(datatype);
158
    }
159 1 1. resolveConcreteFormatter : replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveConcreteFormatter → KILLED
    return candidate;
160
  }
161
162
  private Method resolveSetter(Class<?> clazz, Method getter, Class<?> datatype, AnnotationScanner scanner) {
163 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());
164
    try {
165 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);
166
    } catch (NoSuchMethodException e) {
167
      return null;
168
    }
169
  }
170
171
  private MethodHandle toHandle(Method method) {
172 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;
173
    try {
174 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);
175
    } catch (IllegalAccessException e) {
176 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);
177
    }
178
  }
179
}

Mutations

48

1.1
Location : <init>
Killed by : none
removed call to java/util/Collections::emptyMap → NO_COVERAGE

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

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

4.4
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:customRegistry_overridesBuiltIn_formatterInDescriptorIsCustom()]
removed conditional - replaced equality check with false → KILLED

5.5
Location : <init>
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

57

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

58

1.1
Location : <init>
Killed by : none
Removed assignment to member variable constructorBinding → SURVIVED
Covering tests

62

1.1
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache$1::<init> → KILLED

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

65

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

66

1.1
Location : computeValue
Killed by : none
removed conditional - replaced equality check with false → SURVIVED
Covering tests

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

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

4.4
Location : computeValue
Killed by : none
removed call to com/ancientprogramming/fixedformat4j/format/impl/JavaRecordSupport::isJavaRecord → SURVIVED Covering tests

67

1.1
Location : computeValue
Killed by : none
removed call to com/ancientprogramming/fixedformat4j/format/impl/ConstructorBinding::forRecord → NO_COVERAGE

69

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

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

74

1.1
Location : get
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
replaced return value with Collections.emptyList for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
removed call to java/lang/ClassValue::get → KILLED

82

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

2.2
Location : constructorBinding
Killed by : none
replaced return value with null for com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::constructorBinding → SURVIVED
Covering tests

86

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

87

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

88

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

90

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

91

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

92

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

93

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

94

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
removed conditional - replaced equality check with true → KILLED

95

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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
removed call to java/util/List::add → KILLED

96

1.1
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

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:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
removed conditional - replaced equality check with false → KILLED

97

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

98

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
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:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
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:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
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:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
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:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
removed conditional - replaced comparison check with false → KILLED

99

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
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:onlyFirstFieldsAnnotationDescriptorIsLoadField()]
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

103

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

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

116

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

117

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

118

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:repeatingFieldDescriptorCachesElementMetadata()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:repeatingFieldDescriptorCachesElementMetadata()]
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:repeatingFieldDescriptorCachesElementMetadata()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
Substituted 1 with 0 → KILLED

119

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:nestedRecordFieldDescriptorHasNullFormatter()]
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

120

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:nestedRecordFieldDescriptorHasNullFormatter()]
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

122

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.TestFixedFormatManagerImplBuilder.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestFixedFormatManagerImplBuilder]/[method:registerType_builtInType_customFormatterShadowsBuiltIn()]
replaced call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveSetter with argument → KILLED

123

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

125

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:repeatingFieldDescriptorCachesElementMetadata()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
removed conditional - replaced equality check with true → KILLED

126

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

127

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

128

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

2.2
Location : buildDescriptor
Killed by : none
removed call to com/ancientprogramming/fixedformat4j/annotation/Field::offset → SURVIVED
Covering tests

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

133

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

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

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

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

134

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

135

1.1
Location : buildDescriptor
Killed by : none
removed call to com/ancientprogramming/fixedformat4j/format/FixedFormatUtil::getFixedFormatterInstance → NO_COVERAGE

2.2
Location : buildDescriptor
Killed by : none
removed call to com/ancientprogramming/fixedformat4j/format/FormatContext::getFormatter → NO_COVERAGE

136

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

137

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

2.2
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorCachesElementMetadata()]
removed conditional - replaced comparison 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:repeatingFieldDescriptorCachesElementMetadata()]
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:repeatingFieldDescriptorCachesElementMetadata()]
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:repeatingFieldDescriptorCachesElementMetadata()]
removed conditional - replaced comparison check with true → KILLED

138

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorCachesElementMetadata()]
Replaced integer multiplication with division → KILLED

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

3.3
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:repeatingFieldDescriptorCachesElementMetadata()]
Replaced integer addition with subtraction → KILLED

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

5.5
Location : buildDescriptor
Killed by : none
removed call to com/ancientprogramming/fixedformat4j/annotation/Field::formatter → SURVIVED
Covering tests

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

140

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

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

3.3
Location : buildDescriptor
Killed by : none
Substituted 0 with 1 → SURVIVED
Covering tests

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

144

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

145

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::build → KILLED

146

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
removed conditional - replaced equality check with true → KILLED

147

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

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

148

1.1
Location : buildDescriptor
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
replaced call to com/ancientprogramming/fixedformat4j/format/impl/ClassMetadataCache::resolveConcreteFormatter with argument → KILLED

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

150

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

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

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

155

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

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

3.3
Location : resolveConcreteFormatter
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

156

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

2.2
Location : resolveConcreteFormatter
Killed by : none
removed call to com/ancientprogramming/fixedformat4j/format/impl/ByTypeFormatter::getContext → SURVIVED
Covering tests

157

1.1
Location : resolveConcreteFormatter
Killed by : com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.format.impl.TestClassMetadataCache]/[method:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/ByTypeFormatter::actualFormatter → KILLED

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

159

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

163

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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
removed call to java/lang/reflect/Method::getName → KILLED

165

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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
Substituted 1 with 0 → KILLED

172

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

174

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:customRegistry_emptyMap_resolvesConcretFormatterAsUsual()]
removed call to java/lang/invoke/MethodHandles::lookup → KILLED

176

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