docs: @SuppressWarnings("unchecked")
      public Object convert( String value ) throws Exception
      {
          List<String> parameters = toList( escapeValues( value.split( ";" ) ) );
          Class<?> klass = ClassUtils.loadClass( shift( parameters ) );
  
          if (expectedType != null && !expectedType.isAssignableFrom(klass))
          {
              throw new IllegalArgumentException("Class " + expectedType.getName() + " is not assignable from"  + klass.getName() );
          }
  
          if (parameters.size() == 0) return klass.newInstance();
  
          String[] args = parameters.toArray( new String[parameters.size()] );
          Constructor<?> constructor = klass.getConstructor( args.getClass() );
          return constructor.newInstance( new Object[]{args} );
      }