class SystemSchemaStore {

    private static final int SYSTEM_SCHEMA_MAX_NUMS = 128;

    private SchemaElement[] storeByIds;
    private final Map<String, SchemaElement> storeByNames;

    public SystemSchemaStore() {
        this.storeByIds = new SchemaElement[SYSTEM_SCHEMA_MAX_NUMS];
        this.storeByNames = CollectionFactory.newMap(CollectionType.EC,
                                                     SYSTEM_SCHEMA_MAX_NUMS);
    }

    public void add(SchemaElement schema) {<FILL_FUNCTION_BODY>}

    @SuppressWarnings("unchecked")
    public <T extends SchemaElement> T get(Id id) {
        long idValue = id.asLong();
        assert idValue < 0L;
        int index = (int) Math.abs(idValue);
        return (T) this.storeByIds[index];
    }

    @SuppressWarnings("unchecked")
    public <T extends SchemaElement> T get(String name) {
        return (T) this.storeByNames.get(name);
    }

    private void expandCapacity() {
        int newLength = this.storeByIds.length << 1;
        SchemaElement[] newStoreByIds = new SchemaElement[newLength];
        System.arraycopy(this.storeByIds, 0, newStoreByIds, 0,
                         this.storeByIds.length);
        this.storeByIds = newStoreByIds;
    }
}

        long idValue = schema.id().asLong();
        assert idValue < 0L;
        int index = (int) Math.abs(idValue);
        if (index >= this.storeByIds.length) {
            this.expandCapacity();
        }
        this.storeByIds[index] = schema;
        this.storeByNames.put(schema.name(), schema);
    
<no_super_class>