@Override
    public void cloneFields(Cloner cloner, Object original) {
        super.cloneFields(cloner, original);
        DacLinks originalDac = (DacLinks) original;

        boneLinkList = cloner.clone(boneLinkList);

        boneLinks = new HashMap<>(32);
        for (Map.Entry<String, BoneLink> entry
                : originalDac.boneLinks.entrySet()) {
            String boneName = entry.getKey();
            BoneLink link = entry.getValue();
            BoneLink copyLink = cloner.clone(link);
            boneLinks.put(boneName, copyLink);
        }

        skeleton = cloner.clone(skeleton);
        transformer = cloner.clone(transformer);
        torsoLink = cloner.clone(torsoLink);
    }
Callback from {@link com.jme3.util.clone.Cloner} to convert this
shallow-cloned control into a deep-cloned one, using the specified cloner
and original to resolve copied fields.

@param cloner the cloner that's cloning this control (not null, modified)
@param original the control from which this control was shallow-cloned
(not null, unaffected)
jme3-jbullet/src/main/java/com/jme3/bullet/animation/DacLinks.java