# 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 assumevalues3.Assumevalues {
  public static final int ASSUMED_VALUE;
  public static final long ASSUMED_VALUEL;
  public static void main(...);
}

# Assume values for fields.
-assumevalues public class assumevalues3.Assumevalues {
  public static int value return assumevalues3.Assumevalues.ASSUMED_VALUE;
  public static long valueL return assumevalues3.Assumevalues.ASSUMED_VALUEL;
}

# Allow access modification to enable minifcation.
-allowaccessmodification
