private Animator createSpringAnimator( Rectangle iconContainerBounds, int imageWidth,
            ZoomedImagePainter iconPainter ) {
        float magnifyFactor = recalculateMagnifyFactor( iconContainerBounds, imageWidth );
        iconPainter.setMagnifyFactor( magnifyFactor );

        // changes the 'zoom' field on the painter via the setters/getters
        Animator newAnimator = PropertySetter.createAnimator( 850, iconPainter, "zoom", 0.0f, 1.0f );
        newAnimator.setAcceleration( 0.2f );
        newAnimator.setDeceleration( 0.2f );
        return newAnimator;
    }
Allows clients to add a callback mechanism for timing events
Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ZoomImageRunner.java