docs: public void loadAnimation(GVRAndroidResource animResource, String boneMap)
      {
          String filePath = animResource.getResourcePath();
          GVRContext ctx = mAvatarRoot.getGVRContext();
          GVRResourceVolume volume = new GVRResourceVolume(ctx, animResource);
  
          if (filePath.endsWith(".bvh"))
          {
              GVRAnimator animator = new GVRAnimator(ctx);
              animator.setName(filePath);
              try
              {
                  BVHImporter importer = new BVHImporter(ctx);
                  GVRSkeletonAnimation skelAnim;
  
                  if (boneMap != null)
                  {
                      GVRSkeleton skel = importer.importSkeleton(animResource);
                      skelAnim = importer.readMotion(skel);
                      animator.addAnimation(skelAnim);
  
                      GVRPoseMapper retargeter = new GVRPoseMapper(mSkeleton, skel, skelAnim.getDuration());
                      retargeter.setBoneMap(boneMap);
                      animator.addAnimation(retargeter);
                  }
                  else
                  {
                      skelAnim = importer.importAnimation(animResource, mSkeleton);
                      animator.addAnimation(skelAnim);
                  }
                  addAnimation(animator);
                  ctx.getEventManager().sendEvent(this,
                                                  IAvatarEvents.class,
                                                  "onAnimationLoaded",
                                                  GVRAvatar.this,
                                                  animator,
                                                  filePath,
                                                  null);
              }
              catch (IOException ex)
              {
                  ctx.getEventManager().sendEvent(this,
                                                  IAvatarEvents.class,
                                                  "onAnimationLoaded",
                                                  GVRAvatar.this,
                                                  null,
                                                  filePath,
                                                  ex.getMessage());
              }
          }
          else
          {
              EnumSet<GVRImportSettings> settings = GVRImportSettings.getRecommendedSettingsWith(EnumSet.of(GVRImportSettings.OPTIMIZE_GRAPH, GVRImportSettings.NO_TEXTURING));
  
              GVRSceneObject animRoot = new GVRSceneObject(ctx);
              ctx.getAssetLoader().loadModel(volume, animRoot, settings, false, mLoadAnimHandler);
          }
      }