/* (non-Javadoc)
  * @see Job#setProperty(QualifiedName,Object)
  */
 protected void setProperty(QualifiedName key, Object value) {
   // thread safety: (Concurrency001 - copy on write)
   if (value == null) {
     if (properties == null) return;
     ObjectMap temp = (ObjectMap) properties.clone();
     temp.remove(key);
     if (temp.isEmpty()) properties = null;
     else properties = temp;
   } else {
     ObjectMap temp = properties;
     if (temp == null) temp = new ObjectMap(5);
     else temp = (ObjectMap) properties.clone();
     temp.put(key, value);
     properties = temp;
   }
 }