code: public static <K, V> Map.Entry<K, V> find(Map<K, V> self, @ClosureParams(MapEntryOrKeyValue.class) Closure<?> closure) {
          BooleanClosureWrapper bcw = new BooleanClosureWrapper(closure);
          for (Map.Entry<K, V> entry : self.entrySet()) {
              if (bcw.callForMap(entry)) {
                  return entry;
              }
          }
          return null;
      }
docs: Finds the first entry matching the closure condition.
  If the closure takes two parameters, the entry key and value are passed.
  If the closure takes one parameter, the Map.Entry object is passed.
  <pre class="groovyTestCase">assert [a:1, b:3].find { it.value == 3 }.key == "b"</pre>
  
  @param self    a Map
  @param closure a 1 or 2 arg Closure condition
  @return the first Object found
  @since 1.0