code: protected void addStep(String methodName, Object[] args, Class<?>[] argTypes, boolean builderMethod) {
      	if(StringUtils.isBlank(methodName)) {
          	throw new IllegalArgumentException("methodName cannot be null or empty.");
          }
      	steps.add(new Step(methodName, args, argTypes, builderMethod));
      }
docs: Adds a builder step for this builder, upon build these steps will be called in the same order they came in on.
  
  @param methodName cannot be <code>null</code> or empty.
  @param args may be <code>null</code> or empty.
  @param argTypes argument class types can be specified to ensure the right class types
  are used when we try to find the specified method. This is needed for primitive types do to
  autoboxing issues. May be <code>null</code> or empty.
  @param builderMethod if <code>true</code> then call the specified method on the builder and not
  the component object instance.