code: protected Map<Method, Object> getConsoleMethods() {
  
      // search for declared command collections
      final Iterator<OConsoleCommandCollection> ite = ServiceRegistry.lookupProviders(OConsoleCommandCollection.class);
      final Collection<Object> candidates = new ArrayList<Object>();
      candidates.add(this);
      while (ite.hasNext()) {
        try {
          // make a copy and set it's context
          final OConsoleCommandCollection cc = ite.next().getClass().newInstance();
          cc.setContext(this);
          candidates.add(cc);
        } catch (InstantiationException ex) {
          Logger.getLogger(OConsoleApplication.class.getName()).log(Level.WARNING, ex.getMessage());
        } catch (IllegalAccessException ex) {
          Logger.getLogger(OConsoleApplication.class.getName()).log(Level.WARNING, ex.getMessage());
        }
      }
  
      final Map<Method, Object> consoleMethods = new TreeMap<Method, Object>(new Comparator<Method>() {
        public int compare(Method o1, Method o2) {
          return o1.getName().compareTo(o2.getName());
        }
      });
  
      for (final Object candidate : candidates) {
        final Method[] methods = candidate.getClass().getMethods();
  
        for (Method m : methods) {
          if (Modifier.isAbstract(m.getModifiers()) || Modifier.isStatic(m.getModifiers()) || !Modifier.isPublic(m.getModifiers())) {
            continue;
          }
          if (m.getReturnType() != Void.TYPE) {
            continue;
          }
          consoleMethods.put(m, candidate);
        }
      }
      return consoleMethods;
    }
docs: Returns a map of all console method and the object they can be called on.
  
  @return Map<Method,Object>