private ExecutableAnimation parseAnimationObject(ReadableArray animationArray, ExecutionType executionType) {
        AnimationChain animationChain = new AnimationChain(executionType);
        for (int i = 0; i < animationArray.size(); i++) {
            ExecutableAnimation childAnimation = parseAnimationObjectHelper(animationArray, i, ExecutionType.SERIAL);

            if (childAnimation instanceof AnimationGroup) {
                animationChain.addAnimation((AnimationGroup) childAnimation);
            } else if (childAnimation instanceof AnimationChain) {
                animationChain.addAnimation((AnimationChain) childAnimation);
            } else {
                ViroLog.warn(TAG, "Unknown ExecutableAnimation type [" + childAnimation.getClass().getSimpleName() + "]!");
            }
        }
        return animationChain;
    }
This function helps us branch between the 3 different animation object types

@param array - the array of animation objects
@param index - the index of the animation object to parse
@param executionType - the execution type
@return the parsed animation
android/viro_bridge/src/main/java/com/viromedia/bridge/module/AnimationManager.java