*  @param ns a list of namespaces to filter by, empty = all namespaces.
     *  @return the list of pages that use this image
     *  @throws IOException if a network error occurs
     *  @since 0.10
     */
    public String[] imageUsage(String image, int... ns) throws IOException
    {
        StringBuilder url = new StringBuilder(query);
        image = image.replaceFirst("^(File|Image|" + namespaceIdentifier(FILE_NAMESPACE) + "):", "");
        url.append("list=imageusage&iulimit=max&iutitle=File:");
        url.append(URLEncoder.encode(normalize(image), "UTF-8"));
        constructNamespaceString(url, "iu", ns);
        
        // fiddle
        ArrayList<String> pages = new ArrayList<String>(1333);
        String next = "";
        do
        {
            // connect
            if (!pages.isEmpty())
                next = "&iucontinue="  + next;
            String line = fetch(url + next, "imageUsage");

            // set continuation parameter
            if (line.contains("iucontinue"))
                next = parseAttribute(line, "iucontinue", 0);
            else
                next = null;

            // xml form: <iu pageid="196465" ns="7" title="File talk:Wiki.png" />
            for (int x = line.indexOf("<iu "); x > 0; x = line.indexOf("<iu ", ++x))
                pages.add(decode(parseAttribute(line, "title", x)));
        }
        while (next != null);
        int size = pages.size();
        log(Level.INFO, "Successfully retrieved usages of File:" + image + " (" + size + " items)", "imageUsage");
        return pages.toArray(new String[size]);
    }