private static DataTypeManager[] getDataTypeManagers(DataTypeManagerService service) {

		if (service == null) {
			return null;
		}

		DataTypeManager[] openDTmanagers = service.getDataTypeManagers();
		return openDTmanagers;
	}
Parse a set of C Header files and associated parsing arguments, data types are added to the provided
DTMgr.

Note: Using another open archive while parsing will cause:
- a dependence on the other archive
- any missing data types while parsing are supplied if present from an openDTMgr
- after parsing all data types parsed with an equivalent data type in any openDTMgr
    replaced by the data type from the openDTMgr
    
NOTE: This will only occur if the data type from the openDTMgr's is equivalent.

NOTE: The DTMgr should have been created with the correct data type organization from a language/compilerspec
      if there could be variants in datatype defintions when using the generic data type manager data organization
      for example in a generic FileDataTypeManager int and long are size 4. This will change in the future,
      but with the current implementation, beware!

@param openDTmanagers array of datatypes managers to use for undefined data types

@param filenames names of files in order to parse, could include strings with
       "#" at start, which are ignored as comments
@param includePaths paths to include files, instead of using {@code -I<includepath>} in args
@param args arguments for parsing, {@code -D<defn>=}, ( {@code -I<includepath>} use includePaths parm instead)

@param dtMgr datatypes will be populated into this provided DTMgr, can pass Program or File DTMgr

@param monitor  used to cancel or provide results

@return a formatted string of any output from pre processor parsing or C parsing

@throws ghidra.app.util.cparser.C.ParseException for catastrophic errors in C parsing
@throws ghidra.app.util.cparser.CPP.ParseException for catastrophic errors in Preprocessor macro parsing
Ghidra/Features/Base/src/main/java/ghidra/app/util/cparser/C/CParserUtils.java