public static Wildcard getWildcardInstance(String wildcardprefix) {
        synchronized(Wildcard.class) {
            if(supported_wildcardprefixes == null) {
                supported_wildcardprefixes = new HashMap<String, String>();
                initWildcardMap();
            }
        }

        String[] wildcardsplit = wildcardprefix.split(":");
        if(wildcardsplit.length < 2) {
            wildcardsplit = new String[2];
            wildcardsplit[0] = wildcardprefix;
            wildcardsplit[1] = wildcardprefix;
        }
        for(int i = 0; i < wildcardsplit.length; i++)
            wildcardsplit[i] = wildcardsplit[i].trim();

        if(!supported_wildcardprefixes.containsKey(wildcardsplit[0]))
            return null;

        try {
            Class<?> fc = (Class<?>)Class.forName("org.wargamer2010.wildcardcommand.wildcards."+supported_wildcardprefixes.get(wildcardsplit[0]));
            Wildcard instance = (Wildcard)fc.newInstance();
            instance.initWildcardparts(wildcardsplit[1]);
            return instance;
        } catch(ClassNotFoundException notfoundex) {
            return null;
        } catch(InstantiationException instex) {
            return null;
        } catch(IllegalAccessException illex) {
            return null;
        }
    }