// Path: library/src/main/java/com/google/android/material/motion/Operation.java
// public abstract class Operation<T, U> {
// 
//   public void preConnect(MotionObserver<U> observer) {
//   }
// 
//   /**
//    * Transforms the incoming value before passing it to the observer, or blocks the value.
//    *
//    * @param value The incoming value.
//    */
//   public abstract void next(MotionObserver<U> observer, T value);
// 
//   public void postConnect(MotionObserver<U> observer) {
//   }
// 
//   public void preDisconnect(MotionObserver<U> observer) {
//   }
// 
//   public void postDisconnect(MotionObserver<U> observer) {
//   }
// }
// 
// Path: library/src/main/java/com/google/android/material/motion/SameTypedMapOperation.java
// public abstract class SameTypedMapOperation<T> extends MapOperation<T, T> {
// 
//   public final void build(MotionObserver<T> observer, MotionBuilder<T> builder, T[] values) {
//     for (int i = 0; i < values.length; i++) {
//       values[i] = transform(values[i]);
//     }
//     observer.build(builder, values);
//   }
// }


import android.graphics.PointF;
import android.support.annotation.VisibleForTesting;
import com.google.android.material.motion.Operation;
import com.google.android.material.motion.SameTypedMapOperation;
package com.google.android.material.motion.operators;



public final class LockToXAxis {

  @VisibleForTesting
  LockToXAxis() {
    throw new UnsupportedOperationException();
  }

  /**
   * Lock the point's x value to {@code xValue}.
   */
  public static Operation<PointF, PointF> lockToXAxis(final float xValue) {
    return new SameTypedMapOperation<PointF>() {
      @Override
// Path: library/src/main/java/com/google/android/material/motion/Operation.java
// public abstract class Operation<T, U> {
// 
//   public void preConnect(MotionObserver<U> observer) {
//   }
// 
//   /**
//    * Transforms the incoming value before passing it to the observer, or blocks the value.
//    *
//    * @param value The incoming value.
//    */
//   public abstract void next(MotionObserver<U> observer, T value);
// 
//   public void postConnect(MotionObserver<U> observer) {
//   }
// 
//   public void preDisconnect(MotionObserver<U> observer) {
//   }
// 
//   public void postDisconnect(MotionObserver<U> observer) {
//   }
// }
// 
// Path: library/src/main/java/com/google/android/material/motion/SameTypedMapOperation.java
// public abstract class SameTypedMapOperation<T> extends MapOperation<T, T> {
// 
//   public final void build(MotionObserver<T> observer, MotionBuilder<T> builder, T[] values) {
//     for (int i = 0; i < values.length; i++) {
//       values[i] = transform(values[i]);
//     }
//     observer.build(builder, values);
//   }
// }


// Path: library/src/main/java/com/google/android/material/motion/operators/LockToXAxis.java
import android.graphics.PointF;
import android.support.annotation.VisibleForTesting;
import com.google.android.material.motion.Operation;
import com.google.android.material.motion.SameTypedMapOperation;

package com.google.android.material.motion.operators;



public final class LockToXAxis {

  @VisibleForTesting
  LockToXAxis() {
    throw new UnsupportedOperationException();
  }

  /**
   * Lock the point's x value to {@code xValue}.
   */
  public static Operation<PointF, PointF> lockToXAxis(final float xValue) {
    return new SameTypedMapOperation<PointF>() {
      @Override
      public PointF transform(PointF value) {