docs: public void merge(GVRSkeleton newSkel)
      {
          int numBones = getNumBones();
          List<Integer> parentBoneIds = new ArrayList<Integer>(numBones + newSkel.getNumBones());
          List<String> newBoneNames = new ArrayList<String>(newSkel.getNumBones());
          List<Matrix4f> newMatrices = new ArrayList<Matrix4f>(newSkel.getNumBones());
          GVRPose oldBindPose = getBindPose();
          GVRPose curPose = getPose();
  
          for (int i = 0; i < numBones; ++i)
          {
              parentBoneIds.add(mParentBones[i]);
          }
          for (int j = 0; j < newSkel.getNumBones(); ++j)
          {
              String boneName = newSkel.getBoneName(j);
              int boneId = getBoneIndex(boneName);
              if (boneId < 0)
              {
                  int parentId = newSkel.getParentBoneIndex(j);
                  Matrix4f m = new Matrix4f();
  
                  newSkel.getBindPose().getLocalMatrix(j, m);
                  newMatrices.add(m);
                  newBoneNames.add(boneName);
                  if (parentId >= 0)
                  {
                      boneName = newSkel.getBoneName(parentId);
                      parentId = getBoneIndex(boneName);
                  }
                  parentBoneIds.add(parentId);
              }
          }
          if (parentBoneIds.size() == numBones)
          {
              return;
          }
          int n = numBones +  parentBoneIds.size();
          int[] parentIds = Arrays.copyOf(mParentBones, n);
          int[] boneOptions = Arrays.copyOf(mBoneOptions, n);
          String[] boneNames = Arrays.copyOf(mBoneNames, n);
  
          mBones = Arrays.copyOf(mBones, n);
          mPoseMatrices =  new float[n * 16];
          for (int i = 0; i < parentBoneIds.size(); ++i)
          {
              n = numBones + i;
              parentIds[n] = parentBoneIds.get(i);
              boneNames[n] = newBoneNames.get(i);
              boneOptions[n] = BONE_ANIMATE;
          }
          mBoneOptions = boneOptions;
          mBoneNames = boneNames;
          mParentBones = parentIds;
          mPose = new GVRPose(this);
          mBindPose = new GVRPose(this);
          mBindPose.copy(oldBindPose);
          mPose.copy(curPose);
          mBindPose.sync();
          for (int j = 0; j < newSkel.getNumBones(); ++j)
          {
              mBindPose.setLocalMatrix(numBones + j, newMatrices.get(j));
              mPose.setLocalMatrix(numBones + j, newMatrices.get(j));
          }
          setBindPose(mBindPose);
          mPose.sync();
          updateBonePose();
      }