void disconnectMesh(MObject & iMeshObject,
    std::vector<Prop> & iSampledPropList,
    std::size_t iFirstProp)
{
    MFnMesh fnMesh;
    fnMesh.setObject(iMeshObject);

    // disconnect old connection from AlembicNode or some other nodes
    // to inMesh if one such connection exist
    MPlug dstPlug = fnMesh.findPlug("inMesh");
    disconnectAllPlugsTo(dstPlug);

    disconnectProps(fnMesh, iSampledPropList, iFirstProp);

    clearPt(fnMesh);

    return;

}
void disconnectMesh(MObject & iMeshObject,
    std::vector<std::string> & oSampledPropNameList)
{
    MFnMesh fnMesh;
    fnMesh.setObject(iMeshObject);

    // disconnect old connection from AlembicNode or some other nodes
    // to inMesh if one such connection exist
    MPlug dstPlug = fnMesh.findPlug("inMesh");
    disconnectAllPlugsTo(dstPlug);

    // get prop names and make sure they are disconnected before
    // trying to connect to them
    // disconnect connections to animated props
    //dstPlug = fnMesh.findPlug(propName.c_str());
    // disconnectAllPlugsTo(dstPlug);

    clearPt(fnMesh);

    return;

}