@Override
  public void write(Json json) {
    super.write(json);

    json.writeValue("path", walkingPath);
    json.writeValue("currentStep", currentStep);
    json.writeValue("speed", speed);

    json.writeValue(
        "walkCb", ActionCallbackSerialization.find(walkCb), walkCb == null ? null : String.class);
  }
  @SuppressWarnings("unchecked")
  @Override
  public void read(Json json, JsonValue jsonData) {
    super.read(json, jsonData);

    walkingPath = json.readValue("path", ArrayList.class, Vector2.class, jsonData);
    currentStep = json.readValue("currentStep", Integer.class, jsonData);
    speed = json.readValue("speed", Float.class, jsonData);

    String walkCbSer = json.readValue("walkCb", String.class, jsonData);
    walkCb = ActionCallbackSerialization.find(walkCbSer);
  }
  @Override
  public void update(SpriteActor a, float delta) {
    super.update(a, delta);

    if (isComplete()) segmentEnded((CharacterActor) a);
  }