} catch (SVNException e) { handleUnsupportedCommand(e, "'get-locations' not implemented");
    public int getLocations(String path, long pegRevision, long[] revisions,            ISVNLocationEntryHandler handler) throws SVNException {        assertValidRevision(pegRevision);        for (int i = 0; i < revisions.length; i++) {            assertValidRevision(revisions[i]);        }        int count = 0;        try {            openConnection();            path = getRepositoryPath(path);            Object[] buffer = new Object[] { "get-locations", path,                    getRevisionObject(pegRevision), revisions };            write("(w(sn(*n)))", buffer);            authenticate();            while (true) {                try {                    read("(NS)", buffer);                } catch (SVNException e) {                    break;                }                count++;                if (handler != null) {                    long revision = SVNReader.getLong(buffer, 0);                    String location = SVNReader.getString(buffer, 1);                    if (location != null) {                        handler.handleLocationEntry(new SVNLocationEntry(                                revision, location));                    }                }            }            read("x", buffer);            read("[()]", buffer);        } finally {            closeConnection();        }        return count;    }