code: @SuppressWarnings("TryFinallyCanBeTryWithResources")
      public static List<SasFieldInfo> getFields(String recordType, InputStream is, File dictionary) {
          Map<String, AtomicInteger> counters = new HashMap<>();
  
          List<SasFieldInfo> result = readCsvDictionary(recordType, is, counters);
          if (dictionary != null) {
              InputStream dictIs = null;
              try {
                  dictIs = new FileInputStream(dictionary);
                  result.addAll(readCsvDictionary(recordType, dictIs, counters));
              }
              catch (IOException e) {
                  throw new RuntimeException(e);
              }
              finally {
                  if (dictIs != null) {
                      try {
                          dictIs.close();
                      }
                      catch (IOException e) {
                          // ignored
                      }
                  }
              }
          }
  
          return result;
      }
docs: Returns the fields information for the given parameters.
  <br/><br/>
  Note that some NAACCR ID are too long for SAS; this method cuts-off any ID that is longer than 32 characters and
  add a numeric suffix to ensure unicity.
  @param recordType record type
  @param is input stream to the standard dictionary in CSV format
  @param dictionary user-defined dictionary in CSV format (see standard ones in docs folder)
  @return fields information