code: @SuppressWarnings({ "rawtypes", "unchecked" })
      @Override
      public void setKeyFrameData(Map keyframedata) {
          if (!hasMetaData()) {
              metaData = new MetaData();
          }
          //The map is expected to contain two entries named "times" and "filepositions",
          //both of which contain a map keyed by index and time or position values.
          Map<String, Double> times = new HashMap<>();
          Map<String, Double> filepositions = new HashMap<>();
          if (keyframedata.containsKey("times")) {
              Map inTimes = (Map) keyframedata.get("times");
              for (Object o : inTimes.entrySet()) {
                  Map.Entry<String, Double> entry = (Map.Entry<String, Double>) o;
                  times.put(entry.getKey(), entry.getValue());
              }
          }
          ((MetaData) metaData).put("times", times);
          //
          if (keyframedata.containsKey("filepositions")) {
              Map inPos = (Map) keyframedata.get("filepositions");
              for (Object o : inPos.entrySet()) {
                  Map.Entry<String, Double> entry = (Map.Entry<String, Double>) o;
                  filepositions.put(entry.getKey(), entry.getValue());
              }
          }
          ((MetaData) metaData).put("filepositions", filepositions);
      }
docs: {@inheritDoc}