code: public Option[] getOptions() throws IllegalAccessException, InvocationTargetException, InstantiationException
      {
          if (m_options == null)
          {
              List<Option> options = new ArrayList<Option>();
  
              Configuration config = getMethod().getAnnotation(Configuration.class);
              for (Class<? extends CompositeOption> option : config.extend())
              {
                  for (Option o : option.newInstance().getOptions())
                  {
                      options.add(o);
                  }
              }
  
              for (Option o : (Option[])getMethod().invoke(m_configInstance))
              {
                  options.add(o);
              }
              m_options = options.toArray(new Option[options.size()]);
          }
  
          return m_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 java.lang.reflect.InvocationTargetException
  - Re-thrown, from invoking the configuration method via reflection
  @throws InstantiationException - Re-thrown, from invoking the configuration method via reflection