private <T> T first(Iteration<T, ?> iter) throws Exception {
    try {
      if (iter.hasNext()) {
        return iter.next();
      }
    } finally {
      Iterations.closeCloseable(iter);
    }

    return null;
  }
  private int countElements(Iteration<?, ?> iter) throws Exception {
    int count = 0;

    try {
      while (iter.hasNext()) {
        iter.next();
        count++;
      }
    } finally {
      Iterations.closeCloseable(iter);
    }

    return count;
  }