public void generateStrandMaps() {
    originalOrientations.clear();
    boneRotationMap.clear();
    strandMap.clear();
    strandsBoneList.clear();

    for (SegmentedArmature sa : pinnedDescendants) {
      ArrayList<AbstractBone> strandBoneList = getStrandFromTip(sa.segmentTip);
      strandMap.put(sa, strandBoneList);

      for (AbstractBone ab : strandBoneList) {
        AbstractAxes ax = originalOrientations.get(ab);
        if (ax == null) {
          originalOrientations.put(ab, ab.localAxes().attachedCopy(false));
          boneRotationMap.put(ab, new ArrayList<Rot>());
        }
      }
    }

    strandsBoneList.addAll(boneRotationMap.keySet());
  }