class ConfigKey {

    public boolean isSameKeyAs(Object obj) {
        if(this.equals(obj)) {
            return true;
        } else if (obj instanceof String) {
            String key = (String)obj;
            return key.equals(_name);
        }

        throw new CloudRuntimeException("Comparing ConfigKey to " + obj.toString());
    }

    public  ConfigKey(String category, Class<T> type, String name, String defaultValue, String description, boolean isDynamic, Scope scope);
    public  ConfigKey(String category, Class<T> type, String name, String defaultValue, String description, boolean isDynamic);
    public  ConfigKey(Class<T> type, String name, String category, String defaultValue, String description, boolean isDynamic, Scope scope, T multiplier);
    @Deprecated public  ConfigKey(Class<T> type, String name, String category, String defaultValue, String description, boolean isDynamic);

}