@Override
  public boolean saveProperties(final IProject project) {
    try {
      QualifiedName qualifiedName =
          new QualifiedName(
              ProjectBuildPropertyData.QUALIFIER,
              COptimalizationOptionsData.OPTIMIZATION_LEVEL_PROPERTY);
      String newValue = optimalizationLevel.getActualValue();
      String oldValue = project.getPersistentProperty(qualifiedName);
      if (newValue != null && !newValue.equals(oldValue)) {
        project.setPersistentProperty(qualifiedName, newValue);
      }

      qualifiedName =
          new QualifiedName(
              ProjectBuildPropertyData.QUALIFIER,
              COptimalizationOptionsData.OTHER_OPTIMIZATION_FLAGS_PROPERTY);
      newValue = otherFlags.getStringValue();
      oldValue = project.getPersistentProperty(qualifiedName);
      if (newValue != null && !newValue.equals(oldValue)) {
        project.setPersistentProperty(qualifiedName, newValue);
      }
    } catch (CoreException e) {
      ErrorReporter.logExceptionStackTrace(e);
      return false;
    }

    return true;
  }