code: public void setMetaData(String key, String val) throws XMPPException, SmackException, InterruptedException {
          synchronized (this.metaData) {
              List<String> oldVals = metaData.get(key);
  
              if (oldVals == null || !oldVals.get(0).equals(val)) {
                  oldVals.set(0, val);
  
                  setStatus(presenceMode, maxChats);
              }
          }
      }
docs: Allows the addition of a new key-value pair to the agent's meta data, if the value is
  new data, the revised meta data will be rebroadcast in an agent's presence broadcast.
  
  @param key the meta data key
  @param val the non-null meta data value
  @throws XMPPException if an exception occurs.
  @throws SmackException
  @throws InterruptedException