/// <summary>
        /// Initialize the state without delayed initialization of the BinaryClassInfo.
        /// </summary>
        public BinaryConverter Initialize(Type type, BinarySerializerOptions options, bool supportContinuation)
        {
            _typeSeqList = new List <ushort>();

            BinaryClassInfo binaryClassInfo = options.GetOrAddClass(type);

            TypeMap = options.TypeMap;
            AddTypeSeq(binaryClassInfo.TypeSeq);
            //PrimaryTypeSeq = binaryClassInfo.TypeSeq;

            Current.BinaryClassInfo            = binaryClassInfo;
            Current.BinaryTypeInfo             = TypeMap.GetTypeInfo(binaryClassInfo.TypeSeq);
            Current.DeclaredBinaryPropertyInfo = binaryClassInfo.PropertyInfoForClassInfo;

            if (options.ReferenceHandler != null)
            {
                ReferenceResolver = options.ReferenceHandler !.CreateResolver(writing: true);
            }
            else
            {
                ReferenceResolver = new ObjectReferenceResolver();
            }

            SupportContinuation = supportContinuation;

            return(binaryClassInfo.PropertyInfoForClassInfo.ConverterBase);
        }
        public BinaryConverter InitializeReEntry(Type type, BinarySerializerOptions options)
        {
            BinaryClassInfo classInfo = options.GetOrAddClass(type);


            // Set for exception handling calculation of BinaryPath.
            // BinaryPropertyNameAsString = propertyName;

            PolymorphicBinaryClassInfo = classInfo;
            PolymorphicBinaryTypeInfo  = TypeMap.GetTypeInfo(classInfo.TypeSeq);

            return(classInfo.PropertyInfoForClassInfo.ConverterBase);
        }
        public void Initialize(Type type, BinarySerializerOptions options, bool supportContinuation)
        {
            BinaryClassInfo binaryClassInfo = options.GetOrAddClass(type);

            Current.BinaryClassInfo = binaryClassInfo;

            // The initial BinaryPropertyInfo will be used to obtain the converter.
            Current.BinaryPropertyInfo = binaryClassInfo.PropertyInfoForClassInfo;

            Current.BinaryTypeInfo = TypeMap.GetTypeInfo(type);
            Current.TypeMap        = TypeMap;

            if (options.ReferenceHandler != null)
            {
                ReferenceResolver = options.ReferenceHandler !.CreateResolver(writing: false);
            }
            else
            {
                ReferenceResolver = new ObjectReferenceResolver();
            }

            SupportContinuation = supportContinuation;
            UseFastPath         = !supportContinuation;
        }