code: func ConfigSchemaToProto(b *configschema.Block) *proto.Schema_Block {
  	block := &proto.Schema_Block{}
  
  	for _, name := range sortedKeys(b.Attributes) {
  		a := b.Attributes[name]
  		attr := &proto.Schema_Attribute{
  			Name:        name,
  			Description: a.Description,
  			Optional:    a.Optional,
  			Computed:    a.Computed,
  			Required:    a.Required,
  			Sensitive:   a.Sensitive,
  		}
  
  		ty, err := json.Marshal(a.Type)
  		if err != nil {
  			panic(err)
  		}
  
  		attr.Type = ty
  
  		block.Attributes = append(block.Attributes, attr)
  	}
  
  	for _, name := range sortedKeys(b.BlockTypes) {
  		b := b.BlockTypes[name]
  		block.BlockTypes = append(block.BlockTypes, protoSchemaNestedBlock(name, b))
  	}
  
  	return block
  }
docs: // ConfigSchemaToProto takes a *configschema.Block and converts it to a
  // proto.Schema_Block for a grpc response.