code: public AceDataset fixAssociations() throws IOException {
          for (AceWeather w : this.getWeathers()) {
              w.getId(true);
          }
          for (AceSoil s: this.getSoils()) {
              s.getId(true);
          }
          // Reassociate the ids and regenerate the experiment ID
          for (AceExperiment e: this.getExperiments()) {
              String wid = e.getWeather().getId();
              String sid = e.getSoil().getId();
              e.update("wid", wid, true);
              e.update("sid", sid, true);
              e.getId(true);
          }
  
          return this;
      }
docs: Fix Experiment to Soil Profile/Weather Station mapping after updates.
  <p>
  <strong>NOTE:</strong> This must be called after updating values which
  will affect the hash.
  <p>
  <strong>NOTE:</strong> This method is called prior to generating a JSON
  using any method found in {@link org.agmip.ace.io.AceGenerator}.
  <p>
  Re-associates and regenerates all ID's based on the hash for each
  container.
  @return the current dataset
  @throws IOException if there is an I/O error