private static boolean containVar(@NotNull Map<VarExprent, List<VarExprent>> vars, @Nullable Exprent exprent) {
    if (exprent == null) {
      return false;
    }
    List<VarExprent> exprents = vars.get(exprent);
    if (exprents == null) {
      return false;
    }
    for (VarExprent varExprent : exprents) {
      if (exprent == varExprent) {
        //exactly the same reference
        return true;
      }
    }
    return false;
  }
private static boolean containVar(@NotNull Map<VarExprent, List<VarExprent>> vars, @Nullable Exprent exprent)