code: public void addIdentifiableObject(String id, T idObject, float position) {
  
          m_cache = null;
          if (m_uniqueIds && (m_objectsById.get(id) != null)) {
              removeObject(id);
          }
          if (m_relativeOrdered) {
              int pos = 0;
              Iterator<CmsIdObjectElement<T>> itElems = m_orderedObjectList.iterator();
              while (itElems.hasNext()) {
                  CmsIdObjectElement<T> element = itElems.next();
                  if (element.getPosition() > position) {
                      break;
                  }
                  pos++;
              }
              m_orderedObjectList.add(pos, new CmsIdObjectElement<T>(idObject, position));
          } else {
              m_objectList.add((int)position, idObject);
          }
          if (m_uniqueIds) {
              m_objectsById.put(id, idObject);
          } else {
              List<T> prevObj = m_objectsListsById.get(id);
              if (prevObj == null) {
                  List<T> list = new ArrayList<T>();
                  list.add(idObject);
                  m_objectsListsById.put(id, list);
              } else {
                  prevObj.add(idObject);
              }
          }
  
      }
docs: Inserts the specified object at the specified position in this container.<p>
  
  Shifts the object currently at that position (if any) and any subsequent
  objects to the right (adds one to their indices).<p>
  
  @param id the object identifier
  @param idObject the object add to the container
  @param position the insertion point
  
  @see java.util.List#add(int, Object)