@TraitConfigurationNeeded(
      fields = {
        @TraitConfigurationField(fieldName = "duration", classToExpect = Integer.class),
        @TraitConfigurationField(fieldName = "totalDamage", classToExpect = Double.class)
      })
  @Override
  public void setConfiguration(TraitConfiguration configMap)
      throws TraitConfigurationFailedException {
    super.setConfiguration(configMap);

    duration = (Integer) configMap.get("duration");
    totalDamage = (Double) configMap.get("totalDamage");
  }
  @TraitConfigurationNeeded(
      fields = {
        @TraitConfigurationField(
            fieldName = "range",
            classToExpect = Integer.class,
            optional = true),
        @TraitConfigurationField(fieldName = "time", classToExpect = Integer.class, optional = true)
      })
  @Override
  public void setConfiguration(TraitConfiguration configMap)
      throws TraitConfigurationFailedException {
    super.setConfiguration(configMap);

    if (configMap.containsKey("range")) range = configMap.getAsInt("range");
    if (configMap.containsKey("time")) seconds = configMap.getAsInt("time");
  }