code: protected ManagedIndex createIndex( IndexDefinition defn,
                                          String workspaceName,
                                          NodeTypes.Supplier nodeTypesSupplier,
                                          NodeTypePredicate matcher,
                                          IndexFeedback feedback ) {
          ManagedIndexBuilder builder = getIndexBuilder(defn, workspaceName, nodeTypesSupplier, matcher);
          if (builder == null) {
              throw new UnsupportedOperationException("Index providers should either override this method or the #getIndexBuilder method");
          }
          logger().debug("Index provider '{0}' is creating index in workspace '{1}': {2}", getName(), workspaceName, defn);
          ManagedIndex index = builder.build();
          if (index.requiresReindexing()) {
              scanWorkspace(feedback, defn, workspaceName, index, nodeTypesSupplier);
          }
          return index;
      }
docs: Method called when this provider needs to create a new index given the unique pair of workspace name and index definition.
  An index definition can apply to multiple workspaces, and when it does this method will be called once for each applicable
  workspace.
  <p>
  Providers may either choose to implement this method and therefore have full control over the logic of creating managed indexes
  or simply implement the {@link #getIndexBuilder(IndexDefinition, String, NodeTypes.Supplier, NodeTypePredicate)}
  method which is the easier route and provides some built-in defaults.
  </p>
  
  @param defn the definition of the index; never null
  @param workspaceName the name of the actual workspace to which the new index applies; never null
  @param nodeTypesSupplier the supplier for the current node types cache; never null
  @param matcher the node type matcher used to determine which nodes should be included in the index, and which automatically
  updates when node types are changed in the repository; may not be null
  @param feedback the feedback mechanism for this provider to signal to ModeShape that portions of the repository content
  must be scanned to build/populate the new index; never null
  @return the implementation-specific {@link ManagedIndex} for the new index; may not be null