MinieLibrary/src/main/java/com/jme3/bullet/animation/DacLinks.java
/**
     * Enumerate managed armature joints of the named link, in a pre-order,
     * depth-first traversal of the Armature, such that child joints never
     * precede their ancestors.
     *
     * @param managerName the name of the managing link (not null)
     * @return a new array of managed joints, including the manager if it is not
     * the torso
     */
Enumerate managed armature joints of the named link, in a pre-order,
depth-first traversal of the Armature, such that child joints never
precede their ancestors.

@param managerName the name of the managing link (not null)
@return a new array of managed joints, including the manager if it is not
the torso
Enumerate managed armature joints of the named link in a pre - order depth - first traversal of the Armature such that child joints never precede their ancestors . @param managerName the name of the managing link ( not null ) @return a new array of managed joints including the manager if it is not the torso
Joint[] listManagedArmatureJoints(String managerName) {
        List<Joint> list = new ArrayList<>(8);
        if (torsoName.equals(managerName)) {
            Joint[] roots = armature.getRoots();
            for (Joint rootJoint : roots) {
                list.add(rootJoint);
                addUnlinkedDescendants(rootJoint, list);
            }
        } else {
            BoneLink manager = findBoneLink(managerName);
            if (manager == null) {
                String message = "No link named " + MyString.quote(managerName);
                throw new IllegalArgumentException(message);
            }
            Joint managerJoint = manager.getArmatureJoint();
            list.add(managerJoint);
            addUnlinkedDescendants(managerJoint, list);
        }
        /*
         * Convert the list to an array.
         */
        int numManagedJoints = list.size();
        Joint[] array = new Joint[numManagedJoints];
        list.toArray(array);
        return array;
    }
Joint [ ] listManagedArmatureJoints ( String managerName ) { List < Joint > list = new ArrayList < > ( 8 ) ; if ( torsoName . equals ( managerName ) ) { Joint [ ] roots = armature . getRoots ( ) ; for ( Joint rootJoint : roots ) { list . add ( rootJoint ) ; addUnlinkedDescendants ( rootJoint , list ) ; } } else { BoneLink manager = findBoneLink ( managerName ) ; if ( manager == null ) { String message = "No link named " + MyString . quote ( managerName ) ; throw new IllegalArgumentException ( message ) ; } Joint managerJoint = manager . getArmatureJoint ( ) ; list . add ( managerJoint ) ; addUnlinkedDescendants ( managerJoint , list ) ; } /*
         * Convert the list to an array.
         */ int numManagedJoints = list . size ( ) ; Joint [ ] array = new Joint [ numManagedJoints ] ; list . toArray ( array ) ; return array ; }
Enumerate managed armature joints of the named link, in a pre-order,
 depth-first traversal of the Armature, such that child joints never
 precede their ancestors.
Enumerate managed armature joints of the named link in a pre - order depth - first traversal of the Armature such that child joints never precede their ancestors .