code: @NonNull
      public static ObjectAnimator ofFloat(@Nullable Object target, @NonNull String xPropertyName,
                                           @NonNull String yPropertyName, @NonNull Path path) {
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
              return ObjectAnimatorCompatLollipop.ofFloat(target, xPropertyName, yPropertyName, path);
          } else {
              return ObjectAnimatorCompatBase.ofFloat(target, xPropertyName, yPropertyName, path);
          }
      }
docs: Constructs and returns an ObjectAnimator that animates coordinates along a {@code Path} using
  two properties. A {@code Path} animation moves in two dimensions, animating coordinates
  {@code (x, y)} together to follow the line. In this variation, the coordinates are floats
  that are set to separate properties designated by {@code xPropertyName} and
  {@code yPropertyName}.
  
  @param target The object whose properties are to be animated. This object should have public
  methods on it called {@code setNameX()} and {@code setNameY}, where
  {@code nameX} and {@code nameY} are the value of the {@code xPropertyName} and
  {@code yPropertyName} parameters, respectively.
  @param xPropertyName The name of the property for the x coordinate being animated.
  @param yPropertyName The name of the property for the y coordinate being animated.
  @param path The {@code Path} to animate values along.
  @return An ObjectAnimator object that is set up to animate along {@code path}.