code: public <A, E> MapSubject.UsingCorrespondence<A, E> comparingValuesUsing(
        Correspondence<A, E> correspondence) {
      return delegate().comparingValuesUsing(correspondence);
    }
docs: Starts a method chain for a check in which the actual values (i.e. the values of the {@link
  Map} under test) are compared to expected values using the given {@link Correspondence}. The
  actual values must be of type {@code A}, the expected values must be of type {@code E}. The
  check is actually executed by continuing the method chain. For example:
  
  <pre>{@code
  assertThat(actualMap)
  .comparingValuesUsing(correspondence)
  .containsEntry(expectedKey, expectedValue);
  }</pre>
  
  where {@code actualMap} is a {@code Map<?, A>} (or, more generally, a {@code Map<?, ? extends
  A>}), {@code correspondence} is a {@code Correspondence<A, E>}, and {@code expectedValue} is an
  {@code E}.
  
  <p>Note that keys will always be compared with regular object equality ({@link Object#equals}).
  
  <p>Any of the methods on the returned object may throw {@link ClassCastException} if they
  encounter an actual value that is not of type {@code A} or an expected value that is not of
  type {@code E}.
  
  <p>Note that the {@code MapWithProtoValuesSubject} is designed to save you from having to write
  your own {@link Correspondence}. The configuration methods, such as {@link
  #ignoringRepeatedFieldOrderForValues()} will construct a {@link Correspondence} under the hood
  which performs protobuf comparisons with {@link ProtoSubject#ignoringRepeatedFieldOrder()}.