public static Map<DecompiledLocalVariable, Value> fetchValues(@NotNull StackFrameProxyImpl frameProxy,
                                                                DebugProcess process,
                                                                boolean full) throws Exception {
    Map<DecompiledLocalVariable, Value> map = new LinkedHashMap<>(); // LinkedHashMap for correct order

    Location location = frameProxy.location();
    com.sun.jdi.Method method = location.method();
    final int firstLocalVariableSlot = getFirstLocalsSlot(method);

    // gather code variables names
    MultiMap<Integer, String> namesMap =
      full ? calcNames(new SimpleStackFrameContext(frameProxy, process), firstLocalVariableSlot) : MultiMap.empty();

    // first add arguments
    int slot = getFirstArgsSlot(method);
    List<String> typeNames = method.argumentTypeNames();
    List<Value> argValues = frameProxy.getArgumentValues();
    for (int i = 0; i < argValues.size(); i++) {
      map.put(new DecompiledLocalVariable(slot, true, null, namesMap.get(slot)), argValues.get(i));
      slot += getTypeSlotSize(typeNames.get(i));
    }

    if (!full || !ourInitializationOk) {
      return map;
    }

    // now try to fetch stack values
    List<DecompiledLocalVariable> vars = collectVariablesFromBytecode(frameProxy.getVirtualMachine(), location, namesMap);
    StackFrame frame = frameProxy.getStackFrame();
    int size = vars.size();
    while (size > 0) {
      try {
        return fetchSlotValues(map, vars.subList(0, size), frame);
      }
      catch (Exception e) {
        LOG.debug(e);
      }
      size--; // try with the reduced list
    }

    return map;
  }
public static Map<DecompiledLocalVariable, Value> fetchValues(@NotNull StackFrameProxyImpl frameProxy,
                                                                DebugProcess process,
                                                                boolean full)