code: public static void set(Calendar self, Map<Object, Integer> updates) {
          for (Map.Entry<Object, Integer> entry : updates.entrySet()) {
              Object key = entry.getKey();
              if (key instanceof String) key = CAL_MAP.get(key);
              if (key instanceof Integer) self.set((Integer) key, entry.getValue());
          }
      }
docs: Support mutating a Calendar with a Map.
  <p>
  The map values are the normal values provided as the
  second parameter to <code>java.util.Calendar#set(int, int)</code>.
  The keys can either be the normal fields values provided as
  the first parameter to that method or one of the following Strings:
  <table border="1" cellpadding="4">
  <caption>Calendar index values</caption>
  <tr><td>year</td><td>Calendar.YEAR</td></tr>
  <tr><td>month</td><td>Calendar.MONTH</td></tr>
  <tr><td>date</td><td>Calendar.DATE</td></tr>
  <tr><td>dayOfMonth</td><td>Calendar.DATE</td></tr>
  <tr><td>hourOfDay</td><td>Calendar.HOUR_OF_DAY</td></tr>
  <tr><td>minute</td><td>Calendar.MINUTE</td></tr>
  <tr><td>second</td><td>Calendar.SECOND</td></tr>
  </table>
  Example usage:
  <pre>
  import static java.util.Calendar.*
  def cal = Calendar.instance
  def m = [:]
  m[YEAR] = 2010
  m[MONTH] = DECEMBER
  m[DATE] = 25
  cal.set(m)
  println cal.time // Christmas 2010
  
  cal.set(year:2011, month:DECEMBER, date:25)
  println cal.time // Christmas 2010
  </pre>
  
  @param self    A Calendar
  @param updates A Map of Calendar keys and values
  @see java.util.Calendar#set(int, int)
  @see java.util.Calendar#set(int, int, int, int, int, int)
  @since 1.7.3