code: private static int readObjectData(int offset, String text, List<RTFEmbeddedObject> objects)
     {
        LinkedList<byte[]> blocks = new LinkedList<byte[]>();
  
        offset += (OBJDATA.length());
        offset = skipEndOfLine(text, offset);
        int length;
        int lastOffset = offset;
  
        while (offset != -1)
        {
           length = getBlockLength(text, offset);
           lastOffset = readDataBlock(text, offset, length, blocks);
           offset = skipEndOfLine(text, lastOffset);
        }
  
        RTFEmbeddedObject headerObject;
        RTFEmbeddedObject dataObject;
  
        while (blocks.isEmpty() == false)
        {
           headerObject = new RTFEmbeddedObject(blocks, 2);
           objects.add(headerObject);
  
           if (blocks.isEmpty() == false)
           {
              dataObject = new RTFEmbeddedObject(blocks, headerObject.getTypeFlag2());
              objects.add(dataObject);
           }
        }
  
        return (lastOffset);
     }
docs: This method extracts byte arrays from the embedded object data
  and converts them into RTFEmbeddedObject instances, which
  it then adds to the supplied list.
  
  @param offset offset into the RTF document
  @param text RTF document
  @param objects destination for RTFEmbeddedObject instances
  @return new offset into the RTF document