// Copyright (c) 2018, 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.

package dexsplitsample;

public class Class3 extends Class1 {
  // Instantiate Class1 to prevent it from being merged into Class3.
  private static final Class1 obj = new Class1();

  public static void main(String[] args) {
    Class3 clazz = new Class3();
    if (clazz.getClass1String() != "Class1String") {
      throw new RuntimeException("Can't call method from super");
    }
    if (!new InnerClass().success()) {
      throw new RuntimeException("Can't call method on inner class");
    }
    System.out.println("Class3");
  }

  private static class InnerClass {
    public boolean success() {
      return true;
    }
  }
}
