code: @CheckReturnValue
      public static <T> T mock(Class<T> classToMock, MockSettings mockSettings) {
          return MOCKITO_CORE.mock(classToMock, mockSettings);
      }
docs: Creates a mock with some non-standard settings.
  <p>
  The number of configuration points for a mock grows
  so we need a fluent way to introduce new configuration without adding more and more overloaded Mockito.mock() methods.
  Hence {@link MockSettings}.
  <pre class="code"><code class="java">
  Listener mock = mock(Listener.class, withSettings()
  .name("firstListner").defaultBehavior(RETURNS_SMART_NULLS));
  );
  </code></pre>
  <b>Use it carefully and occasionally</b>. What might be reason your test needs non-standard mocks?
  Is the code under test so complicated that it requires non-standard mocks?
  Wouldn't you prefer to refactor the code under test so it is testable in a simple way?
  <p>
  See also {@link Mockito#withSettings()}
  <p>
  See examples in javadoc for {@link Mockito} class
  
  @param classToMock class or interface to mock
  @param mockSettings additional mock settings
  @return mock object