code: private void copyRequireFeatureToRequireFeatureWithTolerates() {
          Collection<RequireFeatureWithTolerates> rfwt = _asset.getWlpInformation().getRequireFeatureWithTolerates();
          if (rfwt != null) {
              // Both fields (with and without tolerates) should exist, as
              // rfwt should not be created unless the other field is created first.
              // No need to copy, as the two fields should always be in sync
              return;
          }
  
          Collection<String> requireFeature = _asset.getWlpInformation().getRequireFeature();
          if (requireFeature == null) {
              // Neither field exists, no need to copy
              return;
          }
  
          // We have the requireFeature field but not rfwt, so copy info into
          // the new field (rfwt).
          Collection<RequireFeatureWithTolerates> newOne = new HashSet<RequireFeatureWithTolerates>();
          for (String feature : requireFeature) {
              RequireFeatureWithTolerates newFeature = new RequireFeatureWithTolerates();
              newFeature.setFeature(feature);
              newFeature.setTolerates(Collections.<String> emptyList());
              newOne.add(newFeature);
          }
          _asset.getWlpInformation().setRequireFeatureWithTolerates(newOne);
      }
docs: requireFeature was the old field in the asset which didn't contain tolerates information.
  The new field is requireFeatureWithTolerates, and for the moment, both fields are being
  maintained, as older assets in the repository will only have the older field. When older assets
  are being written to, the data from the older field needs to be copied to the new field, to ensure
  both are consistent.
  The write will then write to both fields