@Override
    public Track cloneForSpatial(Spatial spatial) {
        AudioTrack audioTrack = new AudioTrack();
        audioTrack.length = this.length;
        audioTrack.startOffset = this.startOffset;

        //searching for the newly cloned AudioNode
        audioTrack.audio = findAudio(spatial);
        if (audioTrack.audio == null) {
            logger.log(Level.WARNING, "{0} was not found in {1} or is not bound to this track", new Object[]{audio.getName(), spatial.getName()});
            audioTrack.audio = audio;
        }

        //setting user data on the new AudioNode and marking it with a reference to the cloned Track.
        setUserData(audioTrack);

        return audioTrack;
    }
This method clone the Track and search for the cloned counterpart of the
original audio node in the given cloned spatial. The spatial is assumed
to be the Spatial holding the AnimControl controlling the animation using
this Track.

@param spatial the Spatial holding the AnimControl
@return the cloned Track with proper reference
jme3-core/src/main/java/com/jme3/animation/AudioTrack.java