public void TranslationSpeed(Object[] speed) {
        if (! (speed.length == 3 && speed[0] instanceof Double &&
               speed[1] instanceof String && speed[2] instanceof String))
            throw new IllegalArgumentException
                ("\nTranslationSpeed must be number, units, and time base") ;

        double v = ((Double)speed[0]).doubleValue() ;
        String unitsString = (String)speed[1] ;
        String timeBaseString = (String)speed[2] ;
        int units, timeBase ;

        if (unitsString.equals("PhysicalMeters"))
            units = PHYSICAL_METERS ;
        else if (unitsString.equals("VirtualUnits"))
            units = VIRTUAL_UNITS ;
        else
            throw new IllegalArgumentException
                ("\nTranslationSpeed units must be " +
                 "PhysicalMeters or VirtualUnits") ;

        if (timeBaseString.equals("PerFrame"))
            timeBase = PER_FRAME ;
        else if (timeBaseString.equals("PerSecond"))
            timeBase = PER_SECOND ;
        else
            throw new IllegalArgumentException
                ("\ntime base must be PerFrame or PerSecond") ;

        setTranslationSpeed(v, units, timeBase) ;
    }