private MSODrawing getAssociatedMso()
	{
		Boundsheet bs = getSheet();
		int idx = -1;
		if( bs != null )
		{// shouldn't!
			idx = bs.getIndexOf( OBJ );
			if( idx == -1 )
			{
				return null;    // should't!
			}
			while( idx < bs.getSheetRecs().size() )
			{
				if( ((BiffRec) bs.getSheetRecs().get( idx )).getOpcode() == OBJ )
				{
					Obj o = ((Obj) bs.getSheetRecs().get( idx ));
					// if it's of type Note + has the same id, this is it
					if( (o.getObjType() == 0x19) && (o.getObjId() == id) )
					{ // got it!
						// first check if this is one of the odd configurations
						int opcodeprev = ((BiffRec) bs.getSheetRecs().get( idx - 1 )).getOpcode();
						int opcodenext = ((BiffRec) bs.getSheetRecs().get( idx + 1 )).getOpcode();
						if( opcodeprev == MSODRAWING )    // normal case: mso, obj (note), mso, txo, continue, continue
						{
							return (MSODrawing) bs.getSheetRecs().get( idx - 1 );
						}
						if( opcodenext == CONTINUE )
						{// continue masking mso - AFTER object record
							if( (idx + 5) < bs.getSheetRecs().size() )
							{
								return (((Continue) bs.getSheetRecs()
								                      .get( idx + 5 ))).maskedMso;    // the 1st mso is actually at position 5: Obj (note)/Continue/Txo/Continue/Continue/Continue
							}
						}
					}
				}
				idx++;
			}
		}
		return null;
	}