docs: AbstractJcrNode node( NodeKey nodeKey,
                            AbstractJcrNode.Type expectedType,
                            NodeKey parentKey ) throws ItemNotFoundException {
          CachedNode cachedNode = cache.getNode(nodeKey);
          if (cachedNode == null) {
              // The node must not exist or must have been deleted ...
              throw new ItemNotFoundException(nodeKey.toString());
          }
          AbstractJcrNode node = jcrNodes.get(nodeKey);
          if (node == null) {
              node = node(cachedNode, expectedType, parentKey);
          } else if (parentKey != null) {
              // There was an existing node found, but it might not be the node we're looking for:
              // In some cases (e.g., shared nodes), the node key might be used in multiple parents,
              // and we need to find the right one ...
              node = node(cachedNode, expectedType, parentKey);
          }
          return node;
      }