code: function () {
  		var ikConstraints = this.ikConstraints;
  		var ikConstraintsCount = ikConstraints.length;
  
  		var arrayCount = ikConstraintsCount + 1;
  		var boneCache = this.boneCache;
  		if (boneCache.length > arrayCount) boneCache.length = arrayCount;
  		for (var i = 0, n = boneCache.length; i < n; i++)
  			boneCache[i].length = 0;
  		while (boneCache.length < arrayCount)
  			boneCache[boneCache.length] = [];
  
  		var nonIkBones = boneCache[0];
  		var bones = this.bones;
  
  		outer:
  		for (var i = 0, n = bones.length; i < n; i++) {
  			var bone = bones[i];
  			var current = bone;
  			do {
  				for (var ii = 0; ii < ikConstraintsCount; ii++) {
  					var ikConstraint = ikConstraints[ii];
  					var parent = ikConstraint.bones[0];
  					var child= ikConstraint.bones[ikConstraint.bones.length - 1];
  					while (true) {
  						if (current == child) {
  							boneCache[ii].push(bone);
  							boneCache[ii + 1].push(bone);
  							continue outer;
  						}
  						if (child == parent) break;
  						child = child.parent;
  					}
  				}
  				current = current.parent;
  			} while (current);
  			nonIkBones[nonIkBones.length] = bone;
  		}
  	}
docs: Caches information about bones and IK constraints. Must be called if bones or IK constraints are added or removed.