private void lookupPrimaryKeys(final Map<Serializable, Acl> acls,
			final Set<Long> findNow, final List<Sid> sids) {
		Assert.notNull(acls, "ACLs are required");
		Assert.notEmpty(findNow, "Items to find now required");

		String sql = computeRepeatingSql(lookupPrimaryKeysWhereClause, findNow.size());

		Set<Long> parentsToLookup = jdbcTemplate.query(sql,
				new PreparedStatementSetter() {
					public void setValues(PreparedStatement ps) throws SQLException {
						int i = 0;

						for (Long toFind : findNow) {
							i++;
							ps.setLong(i, toFind);
						}
					}
				}, new ProcessResultSet(acls, sids));

		// Lookup the parents, now that our JdbcTemplate has released the database
		// connection (SEC-547)
		if (parentsToLookup.size() > 0) {
			lookupPrimaryKeys(acls, parentsToLookup, sids);
		}
	}