code: public static void fireLocationChange(final Item rootItem, final String oldFullName) {
          String prefix = rootItem.getParent().getFullName();
          if (!prefix.isEmpty()) {
              prefix += '/';
          }
          final String newFullName = rootItem.getFullName();
          assert newFullName.startsWith(prefix);
          int prefixS = prefix.length();
          if (oldFullName.startsWith(prefix) && oldFullName.indexOf('/', prefixS) == -1) {
              final String oldName = oldFullName.substring(prefixS);
              final String newName = rootItem.getName();
              assert newName.equals(newFullName.substring(prefixS));
              forAll(new Function<ItemListener, Void>() {
                  @Override public Void apply(ItemListener l) {
                      l.onRenamed(rootItem, oldName, newName);
                      return null;
                  }
              });
          }
          forAll(new Function<ItemListener, Void>() {
              @Override public Void apply(ItemListener l) {
                  l.onLocationChanged(rootItem, oldFullName, newFullName);
                  return null;
              }
          });
          if (rootItem instanceof ItemGroup) {
              for (final Item child : Items.allItems(ACL.SYSTEM, (ItemGroup)rootItem, Item.class)) {
                  final String childNew = child.getFullName();
                  assert childNew.startsWith(newFullName);
                  assert childNew.charAt(newFullName.length()) == '/';
                  final String childOld = oldFullName + childNew.substring(newFullName.length());
                  forAll(new Function<ItemListener, Void>() {
                      @Override public Void apply(ItemListener l) {
                          l.onLocationChanged(child, childOld, childNew);
                          return null;
                      }
                  });
              }
          }
      }
docs: Calls {@link #onRenamed} and {@link #onLocationChanged} as appropriate.
  @param rootItem the topmost item whose location has just changed
  @param oldFullName the previous {@link Item#getFullName}
  @since 1.548