class UnsatisfiedRequirement {

  private final Object elementNotSatisfyingRequirements;
  private final String errorMessage;

  public UnsatisfiedRequirement(Object elementNotSatisfyingRequirements, String errorMessage) {
    this.elementNotSatisfyingRequirements = elementNotSatisfyingRequirements;
    this.errorMessage = errorMessage;
  }

  public String describe(AssertionInfo info) {
    return format("%s%nerror: %s", info.representation().toStringOf(elementNotSatisfyingRequirements), errorMessage);
  }

  @Override
  public String toString() {
    return format("%s %s", elementNotSatisfyingRequirements, errorMessage);
  }

  public String describe(int index, AssertionInfo info) {<FILL_FUNCTION_BODY>}
}

    return format("%s%n" +
                  "- element index: %s%n" +
                  "- error: %s",
                  info.representation().toStringOf(elementNotSatisfyingRequirements), index, errorMessage);
  
<no_super_class>