code: private ParameterName[] parameterNames(Method method) {
          ParameterName[] parameterNames;
          if (method != null) {
              String[] annotatedNames = annotatedParameterNames(method);
              String[] paranamerNames = paranamerParameterNames(method);
              String[] contextNames = contextParameterNames(method);
  
              parameterNames = new ParameterName[annotatedNames.length];
              for (int i = 0; i < annotatedNames.length; i++) {
                  parameterNames[i] = parameterName(annotatedNames, paranamerNames, contextNames, i);
              }
          } else {
              String[] stepMatcherParameterNames = stepMatcher.parameterNames();
              parameterNames = new ParameterName[stepMatcherParameterNames.length];
              for (int i = 0; i < stepMatcherParameterNames.length; i++) {
                  parameterNames[i] = new ParameterName(stepMatcherParameterNames[i], false, false);
              }
          }
          return parameterNames;
      }
docs: Returns the {@link ParameterName} representations for the method,
  providing an abstraction that supports both annotated and non-annotated
  parameters.
  
  @param method the Method
  @return The array of {@link ParameterName}s