code: public static Map zip(List keys, List values, boolean includeNull) {
          Iterator k = keys.iterator();
          Iterator v = values.iterator();
          HashMap hm = new HashMap();
          while (k.hasNext() && v.hasNext()) {
              Object o = k.next();
              Object p = v.next();
              if (includeNull || o != null && p != null) {
                  hm.put(o, p);
              }
          }
          return hm;
      }
docs: Creates a map where the object at index N from the first List is the key for the object at index N of the second
  List. If either List is shorter than the other, the resulting Map will have only as many keys as are in the
  smallest of the two Lists. <br> If includeNull is true, both keys and values of null are allowed. Note that if
  more than one key is null, previous entries will be overwritten.
  
  @param keys        List of keys
  @param values      List of values
  @param includeNull allow null values and keys
  @return map