class IgnoringFieldsComparator extends FieldByFieldComparator {

  private final String[] fields;

  public IgnoringFieldsComparator(Map<String, Comparator<?>> comparatorByPropertyOrField,
                                  TypeComparators comparatorByType, String... fields) {
    super(comparatorByPropertyOrField, comparatorByType);
    this.fields = fields;
  }

  public IgnoringFieldsComparator(String... fields) {
    this(new HashMap<>(), defaultTypeComparators(), fields);
  }

  @VisibleForTesting
  public String[] getFields() {
    return fields;
  }

  @Override
  protected boolean areEqual(Object actualElement, Object otherElement) {<FILL_FUNCTION_BODY>}

  @Override
  protected String description() {
    return "field/property by field/property comparator on all fields/properties except "
           + CONFIGURATION_PROVIDER.representation().toStringOf(fields);
  }
}

    try {
      return Objects.instance().areEqualToIgnoringGivenFields(actualElement, otherElement, comparatorsByPropertyOrField,
                                                              comparatorsByType, fields);
    } catch (IntrospectionError e) {
      return false;
    }
  
<methods>public void <init>(Map<java.lang.String,Comparator<?>>, org.assertj.core.internal.TypeComparators) ,public void <init>() ,public int compare(java.lang.Object, java.lang.Object) ,public java.lang.String toString() <variables>protected final non-sealed Map<java.lang.String,Comparator<?>> comparatorsByPropertyOrField,protected final non-sealed org.assertj.core.internal.TypeComparators comparatorsByType