@NonNull public static GestureTypingPathDraw create(
      @NonNull OnInvalidateCallback callback, @NonNull GestureTrailTheme theme) {
    if (theme.maxTrailLength <= 0) return NO_OP;
    return new GestureTypingPathDrawHelper(callback, theme);
  }
@Test
  public void testCreatesImpl() {
    final AtomicInteger invalidates = new AtomicInteger();
    GestureTypingPathDraw actual =
        GestureTypingPathDrawHelper.create(
            invalidates::incrementAndGet,
            new GestureTrailTheme(
                Color.argb(200, 60, 120, 240), Color.argb(100, 30, 240, 200), 100f, 20f, 10));
    Assert.assertNotSame(GestureTypingPathDrawHelper.NO_OP, actual);
    Assert.assertTrue(actual instanceof GestureTypingPathDrawHelper);
  }