protected void registerSetters() {
    //
    //  Collects all set<Methods> that require a single parameter, which can be created by an Converter.
    //
    Method[] methods = template.getMethods();
    for (int i = 0; i < methods.length; i++) {
      String methodeName = methods[i].getName();
      if (methodeName.startsWith( Factory.SETTER_ID )) {
        if (methods[i].getParameterTypes().length == 1) {
          Class paraType = methods[i].getParameterTypes()[0];
          if (ConverterLibrary.getInstance().hasConverter( paraType )) {
            //
            //  Check for registered method with the same name:
            //  Here it is perfectly fine to use getSetter and not guessSetter, since we are dealing with Methods already
            Method m = this.getSetter( methodeName );
            if (m != null) {
              //
              //  Here: m and method[i] have the same name. m is already regsitered and method[i] wants to.
              //  The most specializied method should win. If both methods are implemented within the same class,
              //  then the method's paramter will be checked for the highest priority.
              //
              Class cm = m.getDeclaringClass();
              Class cmi = methods[i].getDeclaringClass();

              if (cm.equals( cmi )) {
                Class pType = m.getParameterTypes()[0];
                if (priority( pType ) < priority( paraType )) {
                  setters.remove( m );
                  setters.add( methods[i] );
                }
              } else if (cm.isAssignableFrom( cmi )) {
                setters.remove( m );
                setters.add( methods[i] );
              }
            } else {
              setters.add( methods[i] );
            }
          }
        }
      }
    }
    //Collections.sort((List)setters);
  }