Source:
<code>protected AccumulationAnnotatedTypeFactory( BaseTypeChecker checker, Class<? extends Annotation> accumulator, Class<? extends Annotation> bottom, @Nullable Class<? extends Annotation> predicate) { super(checker); if (!(checker instanceof AccumulationChecker)) { <START> throw new BugInCF( <END> "AccumulationAnnotatedTypeFactory cannot be used with a checker " + "class that is not a subtype of AccumulationChecker. Found class: " + checker.getClass()); } this.accumulationChecker = (AccumulationChecker) checker; this.accumulator = accumulator; Method[] accDeclaredMethods = accumulator.getDeclaredMethods(); if (accDeclaredMethods.length != 1) { rejectMalformedAccumulator("have exactly one element"); } Method accValue = accDeclaredMethods[0]; if (accValue.getName() != "value") { rejectMalformedAccumulator("name its element \"value\""); } if (!accValue.getReturnType().isInstance(new String[0])) { rejectMalformedAccumulator("have an element of type String[]"); } if (accValue.getDefaultValue() == null || ((String[]) accValue.getDefaultValue()).length != 0) { rejectMalformedAccumulator("have the empty String array as its default value"); } this.predicate = predicate; if (predicate != null) { Method[] predDeclaredMethods = predicate.getDeclaredMethods(); if (predDeclaredMethods.length != 1) { rejectMalformedPredicate("have exactly one element"); } Method predValue = predDeclaredMethods[0]; if (predValue.getName() != "value") { rejectMalformedPredicate("name its element \"value\""); } if (!predValue.getReturnType().isInstance("")) { rejectMalformedPredicate("have an element of type String"); } } this.bottom = AnnotationBuilder.fromClass(elements, bottom); this.top = createAccumulatorAnnotation(Collections.emptyList()); }</code><technical_language>I this TypeSystemError instead</technical_language>

Target:
protected AccumulationAnnotatedTypeFactory( BaseTypeChecker checker, Class<? extends Annotation> accumulator, Class<? extends Annotation> bottom, @Nullable Class<? extends Annotation> predicate) { super(checker); if (!(checker instanceof AccumulationChecker)) { throw new TypeSystemError( "AccumulationAnnotatedTypeFactory cannot be used with a checker " + "class that is not a subtype of AccumulationChecker. Found class: " + checker.getClass()); } this.accumulationChecker = (AccumulationChecker) checker; this.accumulator = accumulator; Method[] accDeclaredMethods = accumulator.getDeclaredMethods(); if (accDeclaredMethods.length != 1) { rejectMalformedAccumulator("have exactly one element"); } Method accValue = accDeclaredMethods[0]; if (accValue.getName() != "value") { rejectMalformedAccumulator("name its element \"value\""); } if (!accValue.getReturnType().isInstance(new String[0])) { rejectMalformedAccumulator("have an element of type String[]"); } if (accValue.getDefaultValue() == null || ((String[]) accValue.getDefaultValue()).length != 0) { rejectMalformedAccumulator("have the empty String array as its default value"); } this.predicate = predicate; if (predicate != null) { Method[] predDeclaredMethods = predicate.getDeclaredMethods(); if (predDeclaredMethods.length != 1) { rejectMalformedPredicate("have exactly one element"); } Method predValue = predDeclaredMethods[0]; if (predValue.getName() != "value") { rejectMalformedPredicate("name its element \"value\""); } if (!predValue.getReturnType().isInstance("")) { rejectMalformedPredicate("have an element of type String"); } } this.bottom = AnnotationBuilder.fromClass(elements, bottom); this.top = createAccumulatorAnnotation(Collections.emptyList()); }