code: @Override
      public V remove(final Object o) {
          final CharSequence key = keyCheck(o);
          final TrieNode<V> currentNode = findPreviousNode(key);
  
          if (currentNode == null) {
  			/* Node not found for the given key */
              return null;
          }
  
          final TrieNode<V> node = currentNode.children.get(key.charAt(key
                  .length() - 1));
  
          if (node == null || !node.inUse) {
  			/* Node not found for the given key or is not in use */
              return null;
          }
  
          final V removed = node.value;
          node.unset();
          --size;
          ++modCount;
  
          if (node.children.isEmpty()) {
  			/* Since there are no children left, we can compact the trie */
              compact(key);
          }
  
          return removed;
      }
docs: {@inheritDoc}