static List<Mesh> listAnimatedMeshes(Spatial subtree,
            List<Mesh> storeResult) {
        if (storeResult == null) {
            storeResult = new ArrayList<>(10);
        }

        if (subtree instanceof Geometry) {
            Geometry geometry = (Geometry) subtree;
            Mesh mesh = geometry.getMesh();
            VertexBuffer indices = mesh.getBuffer(VertexBuffer.Type.BoneIndex);
            boolean hasIndices = indices != null;
            VertexBuffer weights = mesh.getBuffer(VertexBuffer.Type.BoneWeight);
            boolean hasWeights = weights != null;
            if (hasIndices && hasWeights && !storeResult.contains(mesh)) {
                storeResult.add(mesh);
            }

        } else if (subtree instanceof Node) {
            Node node = (Node) subtree;
            List<Spatial> children = node.getChildren();
            for (Spatial child : children) {
                listAnimatedMeshes(child, storeResult);
            }
        }

        return storeResult;
    }
Enumerate all animated meshes in the specified subtree of a scene graph.
Note: recursive!

@param subtree which subtree (aliases created)
@param storeResult (added to if not null)
@return an expanded list (either storeResult or a new instance)
jme3-jbullet/src/main/java/com/jme3/bullet/animation/RagUtils.java