@Override
        public Message parse(ReadBuffer io) throws ParseException {
            Object[] argValues = new Object[args.size() + 1];
            int index = 0;
            argValues[index++] = io;
            Class<?>[] parameterTypes = method.getParameterTypes();

            if (parameterTypes.length - 1 != args.size()) {
                String type = method.getDeclaringClass().getName();
                int totalArgs = parameterTypes.length - 1;
                int given = args.size();
                throw new ParseException("Invalid parameters detected. Type " + type + " expected " + totalArgs + ", not " + given);
            }

            for (int i = 0; i < args.size(); i++) {
                String parameterValue = args.get(i);
                Class<?> parameterType = parameterTypes[index];
                if (parameterType == Boolean.class) {
                    argValues[index++] = Boolean.parseBoolean(parameterValue);
                } else if (parameterType == Byte.class) {
                    argValues[index++] = Byte.parseByte(parameterValue);
                } else if (parameterType == Short.class) {
                    argValues[index++] = Short.parseShort(parameterValue);
                } else if (parameterType == Integer.class) {
                    argValues[index++] = Integer.parseInt(parameterValue);
                } else if (parameterType == Long.class) {
                    argValues[index++] = Long.parseLong(parameterValue);
                } else if (parameterType == Float.class) {
                    argValues[index++] = Float.parseFloat(parameterValue);
                } else if (parameterType == Double.class) {
                    argValues[index++] = Double.parseDouble(parameterValue);
                } else if (parameterType == String.class) {
                    argValues[index++] = parameterValue;
                } else if (Enum.class.isAssignableFrom(parameterType)) {
                    argValues[index++] = Enum.valueOf((Class<? extends Enum>) parameterType, parameterValue);
                } else {
                    throw new ParseException("Currently unsupported parameter type");
                }
            }

            try {
                return (Message) method.invoke(null, argValues);
            } catch (IllegalAccessException | InvocationTargetException e) {
                throw new ParseException("Could not parse payload", e);
            }

        }
Returns the messageIO class based on a configured package. convention out of {@code protocolName} {@code outputFlavor} and {@code name}.
If this fails its tries a fallback using the deprecated attribute {@code className}

@param options Test framework options
@param name    name of the message
@param parserArguments the parser arguments to create an instance of the message
@return the found MessageIO
@throws DriverTestsuiteException if a MessageIO couldn't be found.
plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/migration/MessageResolver.java