// first check whether we have got the correct input element or not
if (reader.getLocalName().equals(operation.getInputElement().getName()) &&
reader.getNamespaceURI().equals(operation.getInputElement().getNamespace())) {
// point the reader to parameters
reader.next();
Parameter parameter = null;
List inputParameters = operation.getInputParameters();
QName parameterQName = null;
int startDepth = reader.getDepth();
for (Iterator iter = inputParameters.iterator(); iter.hasNext();) {
parameter = (Parameter) iter.next();
parameterQName = new QName(parameter.getNamespace(), parameter.getName());
returnObjects.add(getObjectForParameter(reader, parameter));
// if the reader is at the end of this parameter
// then we move it to next element.
if (reader.isEndElement() && reader.getName().equals(parameterQName)
&& (readerPriorAccess || reader.getDepth() == startDepth - 1)){