#vulnerable code 
                              public static List<Pair<String, String>> readFlow(String path) throws IOException {
    InputStreamReader fr = new InputStreamReader(FileUtil.class.getResourceAsStream(path));
    BufferedReader br = new BufferedReader(fr);
    String line = "";
    List<Pair<String, String>> flow = new ArrayList<>();
    while ((line = br.readLine()) != null) {
      String sl = line.trim();
      if ((sl.startsWith("//")) || sl.startsWith("#") || sl.equals("")) {
        continue;
      }
      String[] connection = sl.split("->");
      if (connection == null || connection.length != 2) {
        close(br, fr);
        throw new RuntimeException("Illegal flow config:" + path);
      } else {
        flow.add(new Pair<String, String>(connection[0].trim(), connection[1].trim()));
      }
    }
    close(br, fr);
    return flow;
  } 
                            #location 20 
                            #vulnerability type RESOURCE_LEAK
#fixed code
                              public static List<Pair<String, String>> readFlow(String path) throws IOException {
    InputStreamReader fr = new InputStreamReader(FileUtil.class.getResourceAsStream(path),Constant.ENCODING_UTF_8);
    BufferedReader br = new BufferedReader(fr);
    String line;
    List<Pair<String, String>> flow = new ArrayList<>();
    while ((line = br.readLine()) != null) {
      String sl = line.trim();
      if ((sl.startsWith("//")) || sl.startsWith("#") || sl.equals("")) {
        continue;
      }
      String[] connection = sl.split("->");
      if (connection == null || connection.length != 2) {
        close(br, fr);
        throw new RuntimeException("Illegal flow config:" + path);
      } else {
        flow.add(new Pair<String, String>(connection[0].trim(), connection[1].trim()));
      }
    }
    close(br, fr);
    return flow;
  }