class FieldHolder<T> {

  protected final Map<String, T> fieldHolder;

  public FieldHolder() {
    fieldHolder = new TreeMap<>();
  }

  /**
   * Pairs the giving {@code entity} with the {@code fieldLocation}.
   *
   * @param fieldLocation the field location where to apply the giving entity
   * @param entity the entity to pair
   */
  public void put(String fieldLocation, T entity) {
    fieldHolder.put(fieldLocation, entity);
  }

  /**
   * Retrieves a specific entity which is associated with the giving {@code filedLocation} from the field holder, if it
   * presents. Otherwise, this method returns {@code null}.
   *
   * @param fieldLocation the field location which has to be associated with an entity
   * @return entity or null
   */
  public T get(String fieldLocation) {
    return fieldHolder.get(fieldLocation);
  }

  /**
   * Checks, whether an any entity associated with the giving field location.
   *
   * @param fieldLocation the field location which association need to check
   * @return is entity associated with field location
   */
  public boolean hasEntity(String fieldLocation) {
    return fieldHolder.containsKey(fieldLocation);
  }

  /**
   * @return {@code true} is there are registered entities, {@code false} otherwise
   */
  public boolean isEmpty() {
    return fieldHolder.isEmpty();
  }

  /**
   * Returns a sequence of all field-entry pairs which the current holder supplies.
   *
   * @return sequence of field-entry pairs
   */
  public Stream<Entry<String, T>> entryByField() {
    return fieldHolder.entrySet().stream();
  }

  @Override
  public String toString() {<FILL_FUNCTION_BODY>}

  private static <T> String formatRegisteredEntity(Entry<String, T> entry) {
    return format("%s -> %s", entry.getKey(), entry.getValue());
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    FieldHolder<?> that = (FieldHolder<?>) o;
    return fieldHolder.equals(that.fieldHolder);
  }

  @Override
  public int hashCode() {
    return Objects.hash(fieldHolder);
  }
}

    List<String> registeredEntitiesDescription = fieldHolder.entrySet().stream()
                                                            .map(FieldHolder::formatRegisteredEntity)
                                                            .collect(toList());
    return format("{%s}", join(registeredEntitiesDescription).with(", "));
  
<no_super_class>