code: public static <K, V> Map.Entry<K, V> min(Map<K, V> self, @ClosureParams(value=FromString.class, options={"Map.Entry<K,V>", "Map.Entry<K,V>,Map.Entry<K,V>"}) Closure closure) {
          return min((Iterable<Map.Entry<K, V>>)self.entrySet(), closure);
      }
docs: Selects an entry in the map having the minimum
  calculated value as determined by the supplied closure.
  If more than one entry has the minimum value,
  an arbitrary choice is made between the entries having the minimum value.
  <p>
  If the closure has two parameters
  it is used like a traditional Comparator. I.e. it should compare
  its two parameters for order, returning a negative integer,
  zero, or a positive integer when the first parameter is less than,
  equal to, or greater than the second respectively. Otherwise,
  the Closure is assumed to take a single parameter and return a
  Comparable (typically an Integer) which is then used for
  further comparison.
  <pre class="groovyTestCase">
  def zoo = [monkeys:6, lions:5, tigers:7]
  def leastCommonEntry = zoo.min{ it.value }
  assert leastCommonEntry.value == 5
  def mostCommonEntry = zoo.min{ a, b {@code ->} b.value {@code <=>} a.value } // double negative!
  assert mostCommonEntry.value == 7
  </pre>
  Edge case for multiple min values:
  <pre class="groovyTestCase">
  def zoo = [monkeys:6, lions:5, tigers:7]
  def lastCharOfName = { e {@code ->} e.key[-1] }
  def ans = zoo.min(lastCharOfName) // some random entry
  assert lastCharOfName(ans) == 's'
  </pre>
  
  @param self    a Map
  @param closure a 1 or 2 arg Closure used to determine the correct ordering
  @return the Map.Entry having the minimum value as determined by the closure
  @since 1.7.6