docs: public AttributeSet protect() {
        AttributeDefinition<?> attrDefs[] = new AttributeDefinition[attributes.size()];
        int i = 0;
        for (Attribute<?> attribute : attributes.values()) {
           attrDefs[i++] = attribute.getAttributeDefinition();
        }
        AttributeSet protectedSet = new AttributeSet(klass, name, null, attrDefs);
        for (Attribute<?> attribute : protectedSet.attributes.values()) {
           Attribute<?> localAttr = this.attributes.get(attribute.name());
           attribute.read((Attribute)localAttr);
           attribute.protect();
        }
        protectedSet.protect = true;
        return protectedSet;
     }