boolean (final PairProcessor<? super String, Object> processor) { for (Class aClass = getClass(); aClass != null; aClass = aClass.getSuperclass()) { for (final Field field : aClass.getDeclaredFields()) { if (!Modifier.isStatic(field.getModifiers()) && (!field.isSynthetic() && !aClass.equals(PatternCondition.class) || field.getName().startsWith(PARAMETER_FIELD_PREFIX))) { final String name = field.getName(); final String fixedName = name.startsWith(PARAMETER_FIELD_PREFIX) ? name.substring(PARAMETER_FIELD_PREFIX.length()) : name; final Object value = getFieldValue(field); if (!processor.process(fixedName, value)) return false; } } } return true; }