Make the flags instead of Optionu8 and store and access the bits this should shrink the size of Property.
For the flags, we can use bitflags, as we do with the regex lexer.
The spec has the concept of a default property which we can surface with Default:
https://tc39.es/ecma262/#table-default-attribute-values
Make Accessor getter and setter store a Function instead of Value because there always going to be functions
I don't think this will work because those functions are exposed to the outside world, so if someone does a typeof check it would fail.
const object1 = { property1: 42 };
Object.defineProperty(object1, 'prop2', { get: () => {return "blah"}});
typeof Object.getOwnPropertyDescriptor(object1, 'prop2').get; // function