*    ...
     *    registryService.addValue(KEY_A_B_C_1, VALUE_ONE);
     *    registryService.addValue(KEY_A_B_C_2, VALUE_TWO);
     *    ...
     *    assertTrue(registryService.getChildElements(KEY_A_B_null).contains("C"));
     *    ...
     * 
     * This is essentially a merge operation.  Use {@link #delete(RegistryKey) delete} first
     * if the target must be cleaned.
     * 
     * @param sourceKey     the source registry key to take values from
     * @param targetKey     the target registyr key to move the path or value to
     */
    void copy(RegistryKey sourceKey, RegistryKey targetKey);
    
    /**
     * Delete the path element or value described by the key.  If the key points to nothing,
     * then nothing is done.
     * delete(/a/b/c) will remove value c from path /a/b.
     * delete(/a/b/null) will remove node /a/b along with all values and child
     * elements.
     * 
     * @param key           the path or value to delete
     */
    void delete(RegistryKey key);
}