@Override
    public void addView(View child, int index) {
        if (!(child instanceof VRTNode)) {
            throw new IllegalArgumentException("Can not add " + child.getClass().getSimpleName()
                    + " as child of ViroAnimatedComponent");
        }
        super.addView(child, index);

        if (getChildCount() > 1) {
            throw new IllegalStateException("ViroAnimatedComponent can only have 1 child, found more than 1.");
        }

        mChildNode = (VRTNode) child;
        mManagedAnimation.setNode((VRTNode) child);
        // Check if our child is already a child of our parent node, if not, then add it
        if (getParent() != null) {
            VRTNode parent = (VRTNode) getParent();
            if (!parent.containsChild(mChildNode)) {
                parent.addNativeChild(mChildNode);
            }
        }

        // TODO: for now since AnimatedComponent can only have 1 child, we know that after this
        // method is called once, we have all our childen set. If we accept more than 1 child in
        // the future, we'll need to figure out a better way to figure this out.
        onChildrenSet();
    }
AnimatedComponents have their children's native nodes added to the parent, making this
component virtually invisible in terms of the scene graph.
android/viro_bridge/src/main/java/com/viromedia/bridge/component/VRTAnimatedComponent.java