// Path: app/src/main/java/com/bedrock/padder/model/tutorial/TimingListener.java
// public static void listen(Timing timing) {
//     if (timings.indexOf(timing) >= 0) {
//         timings.remove(timing);
//         Log.e("broadcast", "duplicate: listener removed for " + timing.toString());
//     }
//     timings.add(timing);
//     Log.i("broadcast", "listener added for " + timing.toString());
// }
// 
// Path: app/src/main/java/com/bedrock/padder/model/tutorial/Tutorial.java
// public static Animation ANIMATION_FADE = new AlphaAnimation(1, 0);
// 
// Path: app/src/main/java/com/bedrock/padder/model/tutorial/Tutorial.java
// public static int TUTORIAL_ANIMATION_DURATION = 400; // 400 ~ 500 seems legit


import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import static com.bedrock.padder.model.tutorial.TimingListener.listen;
import static com.bedrock.padder.model.tutorial.Tutorial.ANIMATION_FADE;
import static com.bedrock.padder.model.tutorial.Tutorial.TUTORIAL_ANIMATION_DURATION;
                        public void onAnimationEnd(Animation anim) {
                            if (!isOnAnimationEndCalled) {
                                view.setVisibility(View.INVISIBLE);
                                Log.d("TutorialView", "hide.onAnimationEnd " + view.getTag());
                            }
                            isOnAnimationEndCalled = true;
                        }

                        @Override
                        public void onAnimationRepeat(Animation anim) {
                        }
                    });
                    hide.setDuration(50);

                    if (view != null) {
                        Log.d("TutorialView", "view.startAnimation " + view.getTag());
                        Log.d("TutorialView", "view.getVisibility " + view.getVisibility());
                    }
                    view.startAnimation(hide);

                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            if (!isAnimationCalled) {
                                Log.w("run", "View " + view.getTag() + ".getVisibility " + view.getVisibility());
                                view.setVisibility(View.INVISIBLE);
                            }
                        }
                    }, 50 + 10);

// Path: app/src/main/java/com/bedrock/padder/model/tutorial/TimingListener.java
// public static void listen(Timing timing) {
//     if (timings.indexOf(timing) >= 0) {
//         timings.remove(timing);
//         Log.e("broadcast", "duplicate: listener removed for " + timing.toString());
//     }
//     timings.add(timing);
//     Log.i("broadcast", "listener added for " + timing.toString());
// }
// 
// Path: app/src/main/java/com/bedrock/padder/model/tutorial/Tutorial.java
// public static Animation ANIMATION_FADE = new AlphaAnimation(1, 0);
// 
// Path: app/src/main/java/com/bedrock/padder/model/tutorial/Tutorial.java
// public static int TUTORIAL_ANIMATION_DURATION = 400; // 400 ~ 500 seems legit


// Path: app/src/main/java/com/bedrock/padder/model/tutorial/TutorialView.java
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import static com.bedrock.padder.model.tutorial.TimingListener.listen;
import static com.bedrock.padder.model.tutorial.Tutorial.ANIMATION_FADE;
import static com.bedrock.padder.model.tutorial.Tutorial.TUTORIAL_ANIMATION_DURATION;

                        public void onAnimationEnd(Animation anim) {
                            if (!isOnAnimationEndCalled) {
                                view.setVisibility(View.INVISIBLE);
                                Log.d("TutorialView", "hide.onAnimationEnd " + view.getTag());
                            }
                            isOnAnimationEndCalled = true;
                        }

                        @Override
                        public void onAnimationRepeat(Animation anim) {
                        }
                    });
                    hide.setDuration(50);

                    if (view != null) {
                        Log.d("TutorialView", "view.startAnimation " + view.getTag());
                        Log.d("TutorialView", "view.getVisibility " + view.getVisibility());
                    }
                    view.startAnimation(hide);

                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            if (!isAnimationCalled) {
                                Log.w("run", "View " + view.getTag() + ".getVisibility " + view.getVisibility());
                                view.setVisibility(View.INVISIBLE);
                            }
                        }
                    }, 50 + 10);

                    if (animation.getDuration() != TUTORIAL_ANIMATION_DURATION) {