public override void CustomRead()
            {
                OplDataHandler handler = DataHandler;

                // initialize the int 'simpleInt'
                handler.StartElement("anInt");
                handler.AddIntItem(3);
                handler.EndElement();

                // initialize the int array 'simpleIntArray'
                handler.StartElement("anIntArray");
                handler.StartArray();
                handler.AddIntItem(1);
                handler.AddIntItem(2);
                handler.AddIntItem(3);
                handler.EndArray();
                handler.EndElement();

                // initialize int array indexed by float 'anArrayIndexedByFloat'
                handler.StartElement("anArrayIndexedByFloat");
                handler.StartIndexedArray();
                handler.SetItemNumIndex(2.0);
                handler.AddIntItem(1);
                handler.SetItemNumIndex(2.5);
                handler.AddIntItem(2);
                handler.SetItemNumIndex(1.0);
                handler.AddIntItem(3);
                handler.SetItemNumIndex(1.5);
                handler.AddIntItem(4);
                handler.EndIndexedArray();
                handler.EndElement();

                // initialize int array indexed by string 'anArrayIndexedByString'
                handler.StartElement("anArrayIndexedByString");
                handler.StartIndexedArray();
                handler.SetItemStringIndex("idx1");
                handler.AddIntItem(1);
                handler.SetItemStringIndex("idx2");
                handler.AddIntItem(2);
                handler.EndIndexedArray();
                handler.EndElement();

                // initialize a tuple in the order the components are declared
                handler.StartElement("aTuple");
                handler.StartTuple();
                handler.AddIntItem(1);
                handler.AddNumItem(2.3);
                handler.AddStringItem("not named tuple");
                handler.EndTuple();
                handler.EndElement();

                // initialize a tuple using tuple component names.
                handler.StartElement("aNamedTuple");
                handler.StartNamedTuple();
                handler.SetItemName("f");
                handler.AddNumItem(3.45);
                handler.SetItemName("s");
                handler.AddStringItem("named tuple");
                handler.SetItemName("i");
                handler.AddIntItem(99);
                handler.EndNamedTuple();
                handler.EndElement();

                // initialize the tuple set 'simpleTupleSet'
                handler.StartElement("aTupleSet");
                handler.StartSet();
                // first tuple
                handler.StartTuple();
                handler.AddIntItem(1);
                handler.AddNumItem(2.5);
                handler.AddStringItem("a");
                handler.EndTuple();
                // second element
                handler.StartTuple();
                handler.AddIntItem(3);
                handler.AddNumItem(4.1);
                handler.AddStringItem("b");
                handler.EndTuple();
                handler.EndSet();
                handler.EndElement();

                // initialize element 3 and 2 of the tuple array 'simpleTupleArray' in that particular order
                handler.StartElement("aTupleArray");
                handler.StartIndexedArray();
                // initialize 3rd cell
                handler.SetItemIntIndex(3);
                handler.StartTuple();
                handler.AddIntItem(1);
                handler.AddNumItem(2.5);
                handler.AddStringItem("a");
                handler.EndTuple();
                // initialize second cell
                handler.SetItemIntIndex(2);
                handler.StartTuple();
                handler.AddIntItem(3);
                handler.AddNumItem(4.1);
                handler.AddStringItem("b");
                handler.EndTuple();
                handler.EndIndexedArray();
                handler.EndElement();

                // initialize int array indexed by tuple set 'anArrayIndexedByTuple'
                handler.StartElement("anArrayIndexedByTuple");
                handler.StartIndexedArray();
                handler.StartItemTupleIndex();
                handler.AddIntItem(3);
                handler.AddNumItem(4.1);
                handler.AddStringItem("b");
                handler.EndItemTupleIndex();
                handler.AddIntItem(1);
                handler.EndIndexedArray();
                handler.EndElement();

                // initialize a 2-dimension int array 'a2DIntArray'
                handler.StartElement("a2DIntArray");
                handler.StartArray();
                for (int i = 1; i <= 2; i++)
                {
                    handler.StartArray();
                    for (int j = 1; j <= 3; j++)
                    {
                        handler.AddIntItem(i * 10 + j);
                    }
                    handler.EndArray();
                }
                handler.EndArray();
                handler.EndElement();
            }