# Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# Keep the application entry point. Get rid of everything that is not
# reachable from there.
-keep public class assumenosideeffects5.Assumenosideeffects {
  public static void main(...);
}

# Mark some methods to have no side effects.
-assumenosideeffects public class assumenosideeffects5.Assumenosideeffects {
  public static boolean methodTrue(...) return false;
  public static boolean methodFalse(...) return true;
}

# Allow access modification to enable minification.
-allowaccessmodification

# Check that methods have been discarded.
-checkdiscard class ** {
  @assumenosideeffects5.CheckDiscarded *;
}
