@NotNull
  public Map<Object, Object> getProperties() {
    if (propertiesMap == null) {
      try {
        Gson gson = new GsonBuilder().create();
        propertiesMap = gson.fromJson(
          properties,
          new TypeToken<Map<Object, Object>>() {
          }.getType());

        if("RenamingCopyFilter".equals(filterType)) {
          final Object pattern = propertiesMap.get("pattern");
          final Matcher matcher = Pattern.compile(pattern instanceof String ? (String)pattern : "").matcher("");
          propertiesMap.put("matcher", matcher);
        }
      }
      catch (JsonParseException e) {
        throw new RuntimeException("Unsupported filter: " + properties , e);
      }
      if(propertiesMap == null) {
        propertiesMap = new HashMap<>();
      }
    }
    return propertiesMap;
  }
@NotNull
  public Map<Object, Object> getProperties()