@Override
 public long indexGetCommittedId(
     KernelStatement state, IndexDescriptor index, SchemaStorage.IndexRuleKind kind)
     throws SchemaRuleNotFoundException {
   state.locks().acquireShared(ResourceTypes.SCHEMA, schemaResource());
   return schemaReadDelegate.indexGetCommittedId(state, index, kind);
 }
 // === TODO Below is unnecessary delegate methods
 @Override
 public String indexGetFailure(Statement state, IndexDescriptor descriptor)
     throws IndexNotFoundKernelException {
   return schemaReadDelegate.indexGetFailure(state, descriptor);
 }
 @Override
 public Iterator<UniquenessConstraint> constraintsGetAll(KernelStatement state) {
   state.locks().acquireShared(ResourceTypes.SCHEMA, schemaResource());
   return schemaReadDelegate.constraintsGetAll(state);
 }
 @Override
 public Iterator<UniquenessConstraint> constraintsGetForLabelAndPropertyKey(
     KernelStatement state, int labelId, int propertyKeyId) {
   state.locks().acquireShared(ResourceTypes.SCHEMA, schemaResource());
   return schemaReadDelegate.constraintsGetForLabelAndPropertyKey(state, labelId, propertyKeyId);
 }
 @Override
 public Iterator<IndexDescriptor> uniqueIndexesGetAll(KernelStatement state) {
   state.locks().acquireShared(ResourceTypes.SCHEMA, schemaResource());
   return schemaReadDelegate.uniqueIndexesGetAll(state);
 }
 @Override
 public InternalIndexState indexGetState(KernelStatement state, IndexDescriptor descriptor)
     throws IndexNotFoundKernelException {
   state.locks().acquireShared(ResourceTypes.SCHEMA, schemaResource());
   return schemaReadDelegate.indexGetState(state, descriptor);
 }
 @Override
 public Long indexGetOwningUniquenessConstraintId(KernelStatement state, IndexDescriptor index)
     throws SchemaRuleNotFoundException {
   state.locks().acquireShared(ResourceTypes.SCHEMA, schemaResource());
   return schemaReadDelegate.indexGetOwningUniquenessConstraintId(state, index);
 }
 @Override
 public Iterator<IndexDescriptor> indexesGetForLabel(KernelStatement state, int labelId) {
   state.locks().acquireShared(ResourceTypes.SCHEMA, schemaResource());
   return schemaReadDelegate.indexesGetForLabel(state, labelId);
 }
 @Override
 public IndexDescriptor indexesGetForLabelAndPropertyKey(
     KernelStatement state, int labelId, int propertyKey) throws SchemaRuleNotFoundException {
   state.locks().acquireShared(ResourceTypes.SCHEMA, schemaResource());
   return schemaReadDelegate.indexesGetForLabelAndPropertyKey(state, labelId, propertyKey);
 }
 @Override
 public Iterator<UniquenessConstraint> constraintsGetAll(KernelStatement state) {
   state.locks().acquireSchemaReadLock();
   return schemaReadDelegate.constraintsGetAll(state);
 }
 @Override
 public Iterator<UniquenessConstraint> constraintsGetForLabelAndPropertyKey(
     KernelStatement state, int labelId, int propertyKeyId) {
   state.locks().acquireSchemaReadLock();
   return schemaReadDelegate.constraintsGetForLabelAndPropertyKey(state, labelId, propertyKeyId);
 }
 @Override
 public Iterator<IndexDescriptor> uniqueIndexesGetAll(KernelStatement state) {
   state.locks().acquireSchemaReadLock();
   return schemaReadDelegate.uniqueIndexesGetAll(state);
 }
 @Override
 public InternalIndexState indexGetState(KernelStatement state, IndexDescriptor descriptor)
     throws IndexNotFoundKernelException {
   state.locks().acquireSchemaReadLock();
   return schemaReadDelegate.indexGetState(state, descriptor);
 }
 @Override
 public Iterator<IndexDescriptor> indexesGetForLabel(KernelStatement state, int labelId) {
   state.locks().acquireSchemaReadLock();
   return schemaReadDelegate.indexesGetForLabel(state, labelId);
 }