private mTypeBase ReadNew() { mTypeBase field = null; FieldType typeNew = (FieldType)Stream.DecodeBitsAndAdvance(); field = typeNew switch { FieldType.UByte => new mUByte(), FieldType.Bool => new mBool(), FieldType.Short => new mShort(), FieldType.UShort => new mUShort(), FieldType.Float => new mFloat(), FieldType.ULong => new mULong(), FieldType.Long => new mLong(), FieldType.Int => new mInt(), FieldType.UInt => new mUInt(), FieldType.String => new mString(), FieldType.ArrayMaybe => new mArray(), FieldType.ScopeStart => new mNode(), FieldType.ScopeEnd => null, FieldType.SByte => new mSByte(), _ => throw new Exception($"Type: {typeNew} not supported"), }; if (typeNew != FieldType.ScopeEnd) { field.Read(this); } return(field); }