private void processResource(ResourceShape resource, OperationIndex operationIndex, Model model) {
        inputBindings.put(resource.getId(), new HashMap<>());
        outputBindings.put(resource.getId(), new HashMap<>());
        bindingTypes.put(resource.getId(), new HashMap<>());
        resource.getAllOperations().forEach(operationId -> {
            // Ignore broken models in this index.
            Map<String, String> computedInputBindings = operationIndex.getInputShape(operationId)
                    .map(inputShape -> computeBindings(resource, inputShape))
                    .orElse(Collections.emptyMap());
            inputBindings.get(resource.getId()).put(operationId, computedInputBindings);
            allIdentifiers.addAll(computedInputBindings.keySet());

            Map<String, String> computedOutputBindings = operationIndex.getOutputShape(operationId)
                    .map(outputShape -> computeBindings(resource, outputShape))
                    .orElse(Collections.emptyMap());
            outputBindings.get(resource.getId()).put(operationId, computedOutputBindings);
            allIdentifiers.addAll(computedOutputBindings.keySet());

            bindingTypes.get(resource.getId())
                    .put(operationId,
                            isCollection(resource, operationId)
                                    ? BindingType.COLLECTION
                                    : BindingType.INSTANCE);
        });
    }
Gets a map of identifier names to input member names that provide a
value for that identifier.

@param resource Shape ID of a resource.
@param operation Shape ID of an operation.
@return Returns the identifier bindings map or an empty map if the
 binding is invalid or cannot be found.

@deprecated Use {@link #getOperationInputBindings} instead.
smithy-model/src/main/java/software/amazon/smithy/model/knowledge/IdentifierBindingIndex.java