An object can inherit fields and methods from a prototype. Reading a property follows that chain when the object has no own property with that name. Assigning an own property usually shadows the inherited value without changing the prototype. Classes provide syntax for constructing instances and placing methods on their prototype. Each instance still owns its own state. A derived method can call super to reuse the parent implementation, while a getter computes a value when a property is read. You will inspect both instance and prototype values rather than relying on a single happy-path result. The edge cases include empty names, repeated seeds, and capacity used beyond its limit.