public new bool Equals(Object obj)
        {
            if (this == obj)
            {
                return(true);
            }
            if (obj == null)
            {
                return(false);
            }
            if (!(obj is PofMaster))
            {
                return(false);
            }

            PofMaster other = (PofMaster)obj;

            return(NestedTypeWithReference.ArrayEqual(getList1(), other.getList1()) &&
                   NestedTypeWithReference.ArrayEqual(getList2(), other.getList2()) &&
                   NestedTypeWithReference.ArrayEqual(getList3(), other.getList3()) &&
                   NestedTypeWithReference.MapEqual(getMap1(), other.getMap1()) &&
                   NestedTypeWithReference.MapEqual(getMap2(), other.getMap2()) &&
                   NestedTypeWithReference.MapEqual(getMap3(), other.getMap3()) &&
                   getNumber() == other.getNumber() &&
                   getText().Equals(other.getText()) &&
                   NestedTypeWithReference.ArrayEqual(getChildren(), other.getChildren()));
        }
        public void testNestedType()
        {
            m_ctx = new SimplePofContext();
            ((SimplePofContext)m_ctx).RegisterUserType(101, typeof(NestedTypeWithReference), new PortableObjectSerializer(101));
            ((SimplePofContext)m_ctx).RegisterUserType(102, typeof(PortablePerson), new PortableObjectSerializer(102));

            var tv = new NestedTypeWithReference();

            initPOFWriter();
            m_pofWriter.EnableReference();
            m_pofWriter.WriteObject(0, tv);

            initPOFReader();
            var result = (NestedTypeWithReference)m_pofReader.ReadObject(0);
        }