public int [] getLanguages ()
    throws IOException
    {
        synchronized (lock) {
            if (!checkedStrings)
                languages = ControlMessage.getLanguages (this);
            checkedStrings = true;    //if don't set this can get repetitive lookup failures?  -- Wayne Westerman
        }

        if (languages == null)
            return null;

        int retval [] = new int [languages.length];
        for (int i = 0; i < languages.length; i++)
            retval [i] = languages [i];
        return retval;
    }