code: public void saveProperty(T property) throws IOException
      {
          try
          {
              Future<Void> task = savePropertyNB(property);
              task.get();
          }
          catch (ExecutionException e)
          {
              Throwable t = e.getCause();
  
              if (t instanceof IOException)
              {
                  throw (IOException) t;
              }
  
              throw new IOException(t);
          }
          catch (InterruptedException e)
          {
              throw new IOException("Saving of the property "
                                    + property
                                    + " to file \""
                                    + getFile().getAbsolutePath()
                                    + "\" was interrupted.");
          }
      }
docs: Save the current value of the given property to the file without
  modifying the values of any other properties in the file. In other words,
  {@link #isModified(Object)} will return <code>false</code> for the given
  property after this call completes, but it will return <code>true</code>
  for any other properties that have been modified since the last load or
  save.<br>
  <br>
  This method will block and wait for the property to be saved. See
  {@link #savePropertyNB(Object)} for a non-blocking version.
  
  @param property
  the property to save
  @throws IOException
  if there is an error while attempting to write the property
  to the file