class DefaultExtensibleEnum implements ExtensibleEnum {

        private final String id;

        DefaultExtensibleEnum(String id) {
            this.id = Objects.requireNonNull(id);
        }

        public String id() {
            return id;
        }

        @Override
        public int hashCode() {
            return id().hashCode();
        }

        @Override
        public boolean equals(Object obj) {<FILL_FUNCTION_BODY>}

        @Override
        public String toString() {
            return getClass().getSimpleName() + "[" + id() + "]";
        }
    }

            return obj != null && getClass() == obj.getClass() && id().equals(((DefaultExtensibleEnum) obj).id());
        
<no_super_class>