public static CollectionExpression parseCollectionExpression(Expression expression, MatchingMetaInfoHolder
            matchingMetaInfoHolder, IndexedEventHolder indexedEventHolder) {
        CollectionExpression collectionExpression = parseInternalCollectionExpression(expression,
                matchingMetaInfoHolder, indexedEventHolder);
        if (collectionExpression.getCollectionScope() == CollectionExpression.CollectionScope.PARTIAL_PRIMARY_KEY_RESULT_SET
                || collectionExpression.getCollectionScope() == CollectionExpression.CollectionScope.PARTIAL_PRIMARY_KEY_ATTRIBUTE) {
            return new BasicCollectionExpression(collectionExpression.getExpression(), CollectionExpression.CollectionScope.EXHAUSTIVE);
        } else {
            return collectionExpression;
        }
    }
Parse the given expression and create the appropriate Executor by recursively traversing the expression.

@param expression             Expression to be parsed
@param matchingMetaInfoHolder matchingMetaInfoHolder
@param indexedEventHolder     indexed event holder
@return ExpressionExecutor
modules/siddhi-core/src/main/java/io/siddhi/core/util/parser/CollectionExpressionParser.java