code: public Option[] getOptions() throws IllegalAccessException, InvocationTargetException, InstantiationException
      {
          if (options == null)
          {
              List<Option> options = new ArrayList<Option>();
  
              Configuration config = getMethod().getAnnotation(Configuration.class);
              for (Class<? extends CompositeOption> option : config.extend())
              {
                  options.addAll(Arrays.asList(option.newInstance().getOptions()));
              }
  
              options.addAll(Arrays.asList((Option[])getMethod().invoke(configInstance)));
  
              this.options = options.toArray(new Option[options.size()]);
          }
  
          return options;
      }
docs: Returns the configuration options for this configuration method.
  
  @return array of configuration options
  @throws IllegalAccessException    - Re-thrown, from invoking the configuration method via reflection
  @throws InvocationTargetException - Re-thrown, from invoking the configuration method via reflection
  @throws InstantiationException    - Re-thrown, from invoking the configuration method via reflection