protected abstract void WriteUInt64(ulong val, string name); protected abstract void WriteValueType(object obj, string name, System.Type memberType);