docs: protected final void hardcodeValidCopyMethod(Class<?> fieldType, String fullyQualifiedMethodName, Class<?> argType) {
          if (argType==null || fieldType==null || fullyQualifiedMethodName==null) {
              throw new IllegalArgumentException("All parameters must be supplied - no nulls");
          }
          String className = fullyQualifiedMethodName.substring(0, fullyQualifiedMethodName.lastIndexOf("."));
          String methodName = fullyQualifiedMethodName.substring(fullyQualifiedMethodName.lastIndexOf(".")+1);
  
          
          String desc = null;
          try {
              if (MethodIs.aConstructor(methodName)) {
                  Constructor<?> ctor = Class.forName(className).getDeclaredConstructor(argType);
                  desc = Type.getConstructorDescriptor(ctor);
              } else {
                  Method method = Class.forName(className).getMethod(methodName, argType);
                  desc = Type.getMethodDescriptor(method);
              }
          } catch (NoSuchMethodException e) {
              rethrow("No such method", e);
          } catch (SecurityException e) {
              rethrow("Security error", e);
          } catch (ClassNotFoundException e) {
              rethrow("Class not  found", e);
          }
          CopyMethod copyMethod = new CopyMethod(dotted(className), methodName, desc);
          hardcodeValidCopyMethod(fieldType, copyMethod);
      }