// 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 multidex005;

public class ReflectionReference {
  Class directlyReferencedClass;

  public ReflectionReference() throws ClassNotFoundException {
    directlyReferencedClass = Class.forName("multidex005.ClassReference");
  }

  public Object noReference() throws ClassNotFoundException {
    return Class.forName("multidex005.IndirectlyReferenced");
  }

}
