code: protected Method_0_Base createMethodZero(Method method)
    {
      if (method == null) {
        return Method_0_Base.NULL;
      }
      
      if (! void.class.equals(method.getReturnType())) {
        throw new ServiceException(L.l("method {0}.{1} must return void", 
                                       method.getDeclaringClass().getName(),
                                       method.getName()));
      }
      
      if (method.getParameterCount() != 0) { 
        throw new ServiceException(L.l("method {0}.{1} must have zero arguments", 
                                       method.getDeclaringClass().getName(),
                                       method.getName()));
      }
      
      method.setAccessible(true);
      
      try {
        MethodHandle mh = MethodHandles.lookup().unreflect(method);
        
        mh = mh.asType(MethodType.methodType(void.class, Object.class));
      
        return new Method_0(mh);
      } catch (RuntimeException e) {
        throw e;
      } catch (Exception e) {
        throw new ServiceException(e);
      }
    }
docs: /*
  private MethodAmp getDynamicMethod(StubAmp actor,
  String methodName)
  {
  try {
  Object bean = ((StubAmpBean) actor).bean();
  
  MethodRef methodRef = (MethodRef) _getMethod.invokeExact(bean, methodName);
  MethodRefAmp ampMethod = (MethodRefAmp) methodRef;
  
  if (ampMethod == null) {
  return new MethodAmpNull(actor, methodName);
  }
  
  return new MethodStubCustom(actor, ampMethod);
  } catch (Throwable e) {
  e.printStackTrace();
  throw new AmpException(e);
  }
  }