Are duplicate blendShape tokens allowed?

I don’t believe the following fragment is expected to work (correctly) though USD itself doesn’t seem to warn about this either through runtime traces or with usdchecker.

Is the SkelAnimation’s blendShapesarray allowed to contain duplicate tokens?

#usda 1.0
(
    endTimeCode = 554.4000091836734
    framesPerSecond = 24
    metersPerUnit = 0.01
    startTimeCode = 0
    timeCodesPerSecond = 24
    upAxis = "Y"
)

def SkelRoot "SkeletonRoot0" (
    apiSchemas = ["SkelBindingAPI"]
)
{
    rel skel:animationSource = </SkeletonRoot0/_5832632322048_TempMotion>
    rel skel:skeleton = </SkeletonRoot0/Skeleton>

    def Skeleton "Skeleton" (
        apiSchemas = ["SkelBindingAPI"]
    )
    {
        rel skel:animationSource = </SkeletonRoot0/_5832632322048_TempMotion>
    }

    def Mesh "model" (
        apiSchemas = ["SkelBindingAPI"]
    )
    {
        uniform token[] skel:blendShapes = ["V_None"]
        rel skel:blendShapeTargets = </SkeletonRoot0/model/V_None>
        rel skel:skeleton = </SkeletonRoot0/Skeleton>

        def BlendShape "V_None"
        {
            uniform vector3f[] normalOffsets = [(-0.0024537444, 0.27901238, 0.27170885)]
            uniform vector3f[] offsets = [(0, 0, 0)]
            uniform int[] pointIndices = [0]
        }
    }

    def Mesh "model_001" (
        apiSchemas = ["SkelBindingAPI"]
    )
    {
        uniform token[] skel:blendShapes = ["V_None"]
        rel skel:blendShapeTargets = </SkeletonRoot0/model_001/V_None>
        rel skel:skeleton = </SkeletonRoot0/Skeleton>

        def BlendShape "V_None"
        {
            uniform vector3f[] normalOffsets = [(0.005269274, -0.010991216, -0.008327723)]
            uniform vector3f[] offsets = [(0, 0, 0)]
            uniform int[] pointIndices = [0]
        }
    }

    def SkelAnimation "_5832632322048_TempMotion"
    {
        uniform token[] blendShapes = ["V_None", "V_None"]
        float[] blendShapeWeights.timeSamples = {
            0: [0, 0],
            0.4: [0, 0],
        }
    }
}


I believe you’re correct and this is invalid. It’s probably just an oversight that there’s no test for it.