}
private Map<XMLTypeHelper, List<DataType>> getDataTypes(Interface intf, boolean useWrapper, Map<String, XMLTypeHelper> helpers) {
Map<XMLTypeHelper, List<DataType>> dataTypes = new HashMap<XMLTypeHelper, List<DataType>>();
for (Operation op : intf.getOperations()) {
WrapperInfo wrapper = op.getWrapper();
DataType dt1 = null;
boolean useInputWrapper = useWrapper & wrapper != null;
if (useInputWrapper) {
dt1 = wrapper.getInputWrapperType();
useInputWrapper &= inputTypesCompatible(dt1, op.getInputType(), helpers);
}
if (useInputWrapper) {
addDataType(dataTypes, dt1, helpers);
} else {
for (DataType dt : op.getInputType().getLogical()) {
addDataType(dataTypes, dt, helpers);
}
}
DataType dt2 = null;
boolean useOutputWrapper = useWrapper & wrapper != null;
if (useOutputWrapper) {
dt2 = wrapper.getOutputWrapperType();
useOutputWrapper &= outputTypeCompatible(dt2, op.getOutputType(), helpers);
}
if (useOutputWrapper) {
addDataType(dataTypes, dt2, helpers);
} else {