// Path: library/src/main/java/com/google/android/material/motion/MotionObservable.java
// public class MotionObservable<T> extends IndefiniteObservable<MotionObserver<T>> {
// 
//   public MotionObservable(Connector<MotionObserver<T>> connector) {
//     super(connector);
//   }
// 
//   /**
//    * Subscribes to the IndefiniteObservable and ignores all incoming values.
//    *
//    * @see #subscribe(Observer)
//    */
//   public Subscription subscribe() {
//     return super.subscribe(new SimpleMotionObserver<T>() {
//       @Override
//       public void next(T value) {
//       }
//     });
//   }
// 
//   /**
//    * A light-weight operator builder. Applies the given operation to the incoming stream.
//    * <p>
//    * This is the preferred method for building new operators. This builder can be used to create
//    * any operator that only needs to modify or block values. All state events are forwarded
//    * along.
//    *
//    * @param operation An operation to apply to each incoming value. The operation must handle
//    * values of type {@link T} or more general types. For example, an operation that handles {@link
//    * View}s can be applied to a stream of {@link TextView}s.
//    * @param <U> The returned stream contains values of this type. The operation must output values
//    * of this type.
//    */
//   public <U> MotionObservable<U> compose(final Operation<T, U> operation) {
//     final MotionObservable<T> upstream = MotionObservable.this;
// 
//     return new MotionObservable<>(new Connector<MotionObserver<U>>() {
// 
//       @NonNull
//       @Override
//       public Disconnector connect(final MotionObserver<U> observer) {
//         operation.preConnect(observer);
//         final Subscription subscription = upstream.subscribe(new MotionObserver<T>() {
// 
//           @Override
//           public void next(T value) {
//             operation.next(observer, value);
//           }
// 
//           @Override
//           public void build(MotionBuilder<T> builder, T[] values) {
//             if (operation instanceof SameTypedMapOperation) {
//               //noinspection unchecked
//               ((SameTypedMapOperation<T>) operation).build(
//                 (MotionObserver<T>) observer, builder, values);
//             }
//           }
//         });
//         operation.postConnect(observer);
// 
//         return new Disconnector() {
// 
//           @Override
//           public void disconnect() {
//             operation.preDisconnect(observer);
//             subscription.unsubscribe();
//             operation.postDisconnect(observer);
//           }
//         };
//       }
//     });
//   }
// 
//   public <U> MotionObservable<U> compose(final RawOperation<T, U> operation) {
//     return operation.compose(this);
//   }
// }
// 
// Path: library/src/main/java/com/google/android/material/motion/RawOperation.java
// public abstract class RawOperation<T, U> {
// 
//   public abstract MotionObservable<U> compose(MotionObservable<T> stream);
// }
// 
// Path: library/src/main/java/com/google/android/material/motion/operators/Inverted.java
// public static Operation<Boolean, Boolean> inverted() {
//   return new SameTypedMapOperation<Boolean>() {
//     @Override
//     public Boolean transform(Boolean value) {
//       return !value;
//     }
//   };
// }
// 
// Path: library/src/main/java/com/google/android/material/motion/operators/IsActive.java
// public static <T extends GestureRecognizer> Operation<T, Boolean> isActive() {
//   return new MapOperation<T, Boolean>() {
//     @Override
//     public Boolean transform(T value) {
//       int state = value.getState();
//       boolean active = state == BEGAN || state == CHANGED;
//       return active;
//     }
//   };
// }


import android.support.annotation.VisibleForTesting;
import com.google.android.material.motion.MotionObservable;
import com.google.android.material.motion.RawOperation;
import com.google.android.material.motion.gestures.GestureRecognizer;
import static com.google.android.material.motion.operators.Inverted.inverted;
import static com.google.android.material.motion.operators.IsActive.isActive;
package com.google.android.material.motion.operators;




public final class IsAtRest {

  @VisibleForTesting
  IsAtRest() {
// Path: library/src/main/java/com/google/android/material/motion/MotionObservable.java
// public class MotionObservable<T> extends IndefiniteObservable<MotionObserver<T>> {
// 
//   public MotionObservable(Connector<MotionObserver<T>> connector) {
//     super(connector);
//   }
// 
//   /**
//    * Subscribes to the IndefiniteObservable and ignores all incoming values.
//    *
//    * @see #subscribe(Observer)
//    */
//   public Subscription subscribe() {
//     return super.subscribe(new SimpleMotionObserver<T>() {
//       @Override
//       public void next(T value) {
//       }
//     });
//   }
// 
//   /**
//    * A light-weight operator builder. Applies the given operation to the incoming stream.
//    * <p>
//    * This is the preferred method for building new operators. This builder can be used to create
//    * any operator that only needs to modify or block values. All state events are forwarded
//    * along.
//    *
//    * @param operation An operation to apply to each incoming value. The operation must handle
//    * values of type {@link T} or more general types. For example, an operation that handles {@link
//    * View}s can be applied to a stream of {@link TextView}s.
//    * @param <U> The returned stream contains values of this type. The operation must output values
//    * of this type.
//    */
//   public <U> MotionObservable<U> compose(final Operation<T, U> operation) {
//     final MotionObservable<T> upstream = MotionObservable.this;
// 
//     return new MotionObservable<>(new Connector<MotionObserver<U>>() {
// 
//       @NonNull
//       @Override
//       public Disconnector connect(final MotionObserver<U> observer) {
//         operation.preConnect(observer);
//         final Subscription subscription = upstream.subscribe(new MotionObserver<T>() {
// 
//           @Override
//           public void next(T value) {
//             operation.next(observer, value);
//           }
// 
//           @Override
//           public void build(MotionBuilder<T> builder, T[] values) {
//             if (operation instanceof SameTypedMapOperation) {
//               //noinspection unchecked
//               ((SameTypedMapOperation<T>) operation).build(
//                 (MotionObserver<T>) observer, builder, values);
//             }
//           }
//         });
//         operation.postConnect(observer);
// 
//         return new Disconnector() {
// 
//           @Override
//           public void disconnect() {
//             operation.preDisconnect(observer);
//             subscription.unsubscribe();
//             operation.postDisconnect(observer);
//           }
//         };
//       }
//     });
//   }
// 
//   public <U> MotionObservable<U> compose(final RawOperation<T, U> operation) {
//     return operation.compose(this);
//   }
// }
// 
// Path: library/src/main/java/com/google/android/material/motion/RawOperation.java
// public abstract class RawOperation<T, U> {
// 
//   public abstract MotionObservable<U> compose(MotionObservable<T> stream);
// }
// 
// Path: library/src/main/java/com/google/android/material/motion/operators/Inverted.java
// public static Operation<Boolean, Boolean> inverted() {
//   return new SameTypedMapOperation<Boolean>() {
//     @Override
//     public Boolean transform(Boolean value) {
//       return !value;
//     }
//   };
// }
// 
// Path: library/src/main/java/com/google/android/material/motion/operators/IsActive.java
// public static <T extends GestureRecognizer> Operation<T, Boolean> isActive() {
//   return new MapOperation<T, Boolean>() {
//     @Override
//     public Boolean transform(T value) {
//       int state = value.getState();
//       boolean active = state == BEGAN || state == CHANGED;
//       return active;
//     }
//   };
// }


// Path: library/src/main/java/com/google/android/material/motion/operators/IsAtRest.java
import android.support.annotation.VisibleForTesting;
import com.google.android.material.motion.MotionObservable;
import com.google.android.material.motion.RawOperation;
import com.google.android.material.motion.gestures.GestureRecognizer;
import static com.google.android.material.motion.operators.Inverted.inverted;
import static com.google.android.material.motion.operators.IsActive.isActive;

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




public final class IsAtRest {

  @VisibleForTesting
  IsAtRest() {
    throw new UnsupportedOperationException();