public String[] whatTranscludesHere(String title, int... ns) throws IOException
    {
        StringBuilder url = new StringBuilder(query);
        url.append("list=embeddedin&eilimit=max&eititle=");
        url.append(URLEncoder.encode(normalize(title), "UTF-8"));
        constructNamespaceString(url, "ei", ns);

        // main loop
        ArrayList<String> pages = new ArrayList<String>(6667); // generally enough
        String next = "";
        do
        {
            // fetch data
            String line = fetch(url + next, "whatTranscludesHere");

            // set next starting point
            if (line.contains("eicontinue"))
            {
                int a = line.indexOf("eicontinue=\"") + 12;
                int b = line.indexOf('\"', a);
                next = "&eicontinue=" + line.substring(a, b);
            }
            else
                next = "done";

            // parse items
            while (line.contains("title"))
            {
                int x = line.indexOf("title=\"");
                int y = line.indexOf("\" ", x);
                pages.add(decode(line.substring(x + 7, y)));
                line = line.substring(y + 4);
            }
        }
        while (!next.equals("done"));
        log(Level.INFO, "Successfully retrieved transclusions of " + title + " (" + pages.size() + " items)", "whatTranscludesHere");
        return pages.toArray(new String[0]);
    }