class FunctionSignatureParser {

	public FunctionDefinitionDataType parse(FunctionSignature originalSignature,
			String signatureText) throws ParseException {
		dtMap.clear();
		nameMap.clear();

		if (originalSignature != null) {
			initDataTypeMap(originalSignature);
			signatureText = cleanUpSignatureText(signatureText, originalSignature);
		}

		String functionName = extractFunctionName(signatureText);
		FunctionDefinitionDataType function = new FunctionDefinitionDataType(functionName);

		function.setReturnType(extractReturnType(signatureText));
		function.setArguments(extractArguments(signatureText));
		function.setVarArgs(hasVarArgs(signatureText));

		return function;
	}

	public  FunctionSignatureParser(Program program, DataTypeManagerService service);

}