code: @Override
      public void visit(PrimitiveParameter primitiveParameter) {
          PrimitiveParameter copy = new PrimitiveParameter(primitiveParameter.getId(), this.uniqueId != null ? this.uniqueId : primitiveParameter.getUniqueId());
          copy.setCreateDate(this.createDate != null ? this.createDate : primitiveParameter.getCreateDate());
          copy.setUpdateDate(this.updateDate != null ? this.updateDate : primitiveParameter.getUpdateDate());
          copy.setDeleteDate(this.deleteDate != null ? this.deleteDate : primitiveParameter.getDeleteDate());
          copy.setDownloadDate(this.downloadDate != null ? this.downloadDate : primitiveParameter.getDownloadDate());
          copy.setInterval(primitiveParameter.getInterval());
          copy.setSourceSystem(this.sourceSystem != null ? this.sourceSystem : primitiveParameter.getSourceSystem());
          if (this.references != null) {
              for (String refName : this.references.keySet()) {
                  copy.setReferences(refName, this.references.get(refName));
              }
          } else {
              for (String refName : primitiveParameter.getReferenceNames()) {
                  copy.setReferences(refName, primitiveParameter.getReferences(refName));
              }
          }
          if (this.properties != null) {
              for (String propName : this.properties.keySet()) {
                  copy.setProperty(propName, this.properties.get(propName));
              }
          } else {
              for (String propName : primitiveParameter.getPropertyNames()) {
                  copy.setProperty(propName, primitiveParameter.getProperty(propName));
              }
          }
          copy.setValue(primitiveParameter.getValue());
          this.theCopy = copy;
      }
docs: Copies a {@link PrimitiveParameter} proposition. Retrieve it by
  subsequently calling {@link #getCopy() }.
  
  @param primitiveParameter the primitive parameter to copy. Cannot be
  <code>null</code>.