@SuppressWarnings({"SpellCheckingInspection"})
  public ReferenceType loadClass(EvaluationContextImpl evaluationContext, String qName, ClassLoaderReference classLoader)
    throws InvocationException, ClassNotLoadedException, IncompatibleThreadStateException, InvalidTypeException, EvaluateException {

    DebuggerManagerThreadImpl.assertIsManagerThread();
    qName = reformatArrayName(qName);
    VirtualMachineProxyImpl virtualMachine = getCurrentVm(evaluationContext);
    ClassType classClassType = (ClassType)ContainerUtil.getFirstItem(virtualMachine.classesByName(CommonClassNames.JAVA_LANG_CLASS));
    if (classClassType == null) {
      logError("Unable to find loaded class " + CommonClassNames.JAVA_LANG_CLASS);
      return null;
    }
    final Method forNameMethod;
    List<Value> args = new ArrayList<>(); // do not use unmodifiable lists because the list is modified by JPDA
    args.add(DebuggerUtilsEx.mirrorOfString(qName, virtualMachine, evaluationContext));
    if (classLoader != null) {
      //forNameMethod = classClassType.concreteMethodByName("forName", "(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;");
      forNameMethod = DebuggerUtils.findMethod(classClassType, "forName", "(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;");
      args.add(virtualMachine.mirrorOf(true));
      args.add(classLoader);
    }
    else {
      //forNameMethod = classClassType.concreteMethodByName("forName", "(Ljava/lang/String;)Ljava/lang/Class;");
      forNameMethod = DebuggerUtils.findMethod(classClassType, "forName", "(Ljava/lang/String;)Ljava/lang/Class;");
    }
    if (forNameMethod == null) {
      logError("Unable to find forName method in " + classClassType);
      return null;
    }
    Value classReference = invokeMethod(evaluationContext, classClassType, forNameMethod, args, MethodImpl.SKIP_ASSIGNABLE_CHECK, true);
    if (classReference instanceof ClassObjectReference) {
      ReferenceType refType = ((ClassObjectReference)classReference).reflectedType();
      if (classLoader instanceof ClassLoaderReferenceImpl) {
        ((ClassLoaderReferenceImpl)classLoader).addVisible(refType);
      }
      return refType;
    }
    return null;
  }
@SuppressWarnings({"SpellCheckingInspection"})
  public ReferenceType loadClass(EvaluationContextImpl evaluationContext, String qName, ClassLoaderReference classLoader)