private Method findOperation(AxisOperation op, Class implClass) throws AxisFault {

    Method method = (Method) (op.getParameterValue("myMethod"));

    if (method != null) return method;

    String methodName = op.getName().getLocalPart();

    try {

      // Looking for a method of the form "void method(OMElement)"

      method = implClass.getMethod(methodName, new Class[] {OMElement.class});

      //			if (1 == 1)
      //				throw new Exception("return type is " + method.getReturnType().getName() + "\n" +
      //						"methodName is " + methodName + "\n" +
      //						"class is " + implClass.getName());

      if (method.getReturnType().getName().equals("void")) {
        try {
          op.addParameter("myMethod", method);
        } catch (AxisFault axisFault) {
          throw AxisFault.makeFault(axisFault);
        }
        return method;
      }

    } catch (Exception e) {
      throw AxisFault.makeFault(e);
    }

    if (logger.isDebugEnabled()) {
      logger.debug("return class is " + method.getReturnType().getName());
    }

    return null;
  }
  private Method findOperation(AxisOperation op, Class implClass) {
    Method method = (Method) (op.getParameterValue("myMethod"));
    if (method != null && method.getDeclaringClass() == implClass) return method;

    String methodName = op.getName().getLocalPart();

    try {
      // Looking for a method of the form "OMElement method(OMElement)"
      method = implClass.getMethod(methodName, new Class[] {OMElement.class});
      if (method.getReturnType().equals(OMElement.class)) {
        try {
          op.addParameter("myMethod", method);
        } catch (AxisFault axisFault) {
          // Do nothing here
        }
        return method;
      }
    } catch (NoSuchMethodException e) {
      // Fault through
    }

    return null;
  }