@Override
    public void removeViewAt(int index) {
        if (!isTornDown()) {
            View child = getChildAt(index);
            if (child instanceof VRTLight) {
                ((VRTLight) child).removeFromNode(mNodeJni);
            } else if (child instanceof VRTCamera) {
                final VRTCamera childNode = (VRTCamera) child;
                childNode.getNodeRootTransformCamera().getNodeJni().removeFromParentNode();
            } else if (child instanceof VRTNode) {
                final VRTNode childNode = (VRTNode) child;
                childNode.mNodeJni.removeFromParentNode();
            } else if (child instanceof VRTAnimatedComponent) {
                VRTAnimatedComponent animatedComponent = (VRTAnimatedComponent) child;
                for (int i = 0; i < animatedComponent.getChildCount(); i++) {
                    if (!(animatedComponent.getChildAt(i) instanceof VRTNode)) {
                        continue;
                    }

                    VRTNode animatedTarget = (VRTNode) animatedComponent.getChildAt(i);
                    if (containsChild(animatedTarget)) {
                        removeNativeChild(animatedTarget);
                    }
                }
            } else {
                // TODO: Throw Error? Red Screen?
            }
        }

        super.removeViewAt(index);
    }
This function creates a Node object. Child classes should override to provide
     their own Node.
android/viro_bridge/src/main/java/com/viromedia/bridge/component/node/VRTNode.java