@Override
    public ImplicitMod deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
        for (String s : Constants.ESCAPED_MODS) {
            Pattern p = Pattern.compile(s);
            Matcher m = p.matcher(jsonElement.getAsString());
            while (m.find()) {
                if (m.groupCount() == 1) {
                    if (jsonElement.getAsString().contains("%")) {
                        return new ImplicitMod(new PercentageProperty(jsonElement.getAsString(), 1, AugmentColour.DEFAULT_AUGMENT, Integer.parseInt(m.group(1))));
                    } else if (jsonElement.getAsString().contains(".")) {
                        return new ImplicitMod(new DecProperty(jsonElement.getAsString(), 1, AugmentColour.DEFAULT_AUGMENT, Double.parseDouble(m.group(1))));
                    } else {
                        return new ImplicitMod(new IntProperty(jsonElement.getAsString(), 1, AugmentColour.DEFAULT_AUGMENT, Integer.parseInt(m.group(1))));
                    }
                } else if (m.groupCount() == 2) {
                    return new ImplicitMod(new MinMaxProperty(jsonElement.getAsString(), 1, AugmentColour.DEFAULT_AUGMENT, Integer.parseInt(m.group(1)), Integer.parseInt(m.group(2))));
                }
            }
        }
    return null;
    }