code: func New(crdColumns []apiextensions.CustomResourceColumnDefinition) (rest.TableConvertor, error) {
  	headers := []metav1beta1.TableColumnDefinition{
  		{Name: "Name", Type: "string", Format: "name", Description: swaggerMetadataDescriptions["name"]},
  	}
  	c := &convertor{
  		headers: headers,
  	}
  
  	for _, col := range crdColumns {
  		path := jsonpath.New(col.Name)
  		if err := path.Parse(fmt.Sprintf("{%s}", col.JSONPath)); err != nil {
  			return c, fmt.Errorf("unrecognized column definition %q", col.JSONPath)
  		}
  		path.AllowMissingKeys(true)
  
  		desc := fmt.Sprintf("Custom resource definition column (in JSONPath format): %s", col.JSONPath)
  		if len(col.Description) > 0 {
  			desc = col.Description
  		}
  
  		c.additionalColumns = append(c.additionalColumns, path)
  		c.headers = append(c.headers, metav1beta1.TableColumnDefinition{
  			Name:        col.Name,
  			Type:        col.Type,
  			Format:      col.Format,
  			Description: desc,
  			Priority:    col.Priority,
  		})
  	}
  
  	return c, nil
  }
docs: // New creates a new table convertor for the provided CRD column definition. If the printer definition cannot be parsed,
  // error will be returned along with a default table convertor.