code: public final Operation createIndex(ParentName parent, Index index) {
  
      CreateIndexRequest request =
          CreateIndexRequest.newBuilder()
              .setParent(parent == null ? null : parent.toString())
              .setIndex(index)
              .build();
      return createIndex(request);
    }
docs: Creates a composite index. This returns a
  [google.longrunning.Operation][google.longrunning.Operation] which may be used to track the
  status of the creation. The metadata for the operation will be the type
  [IndexOperationMetadata][google.firestore.admin.v1.IndexOperationMetadata].
  
  <p>Sample code:
  
  <pre><code>
  try (FirestoreAdminClient firestoreAdminClient = FirestoreAdminClient.create()) {
  ParentName parent = ParentName.of("[PROJECT]", "[DATABASE]", "[COLLECTION_ID]");
  Index index = Index.newBuilder().build();
  Operation response = firestoreAdminClient.createIndex(parent, index);
  }
  </code></pre>
  
  @param parent A parent name of the form
  `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}`
  @param index The composite index to create.
  @throws com.google.api.gax.rpc.ApiException if the remote call fails