code: public static <T> T notNullAndEquals (final T aValue,
                                          @Nonnull final Supplier <? extends String> aName,
                                          @Nonnull final T aExpectedValue)
    {
      notNull (aValue, aName);
      if (isEnabled ())
        if (!aValue.equals (aExpectedValue))
          throw new IllegalArgumentException ("The value of '" +
                                              aName.get () +
                                              "' does not match the expected value. Passed value: " +
                                              aValue +
                                              " -- Expected value: " +
                                              aExpectedValue);
      return aValue;
    }
docs: Check that the passed value is not <code>null</code> and equal to the
  provided expected value.
  
  @param <T>
  Type to be checked and returned
  @param aValue
  The value to check.
  @param aName
  The name of the value (e.g. the parameter name)
  @param aExpectedValue
  The expected value. May not be <code>null</code>.
  @return The passed value.
  @throws IllegalArgumentException
  if the passed value is not <code>null</code>.