You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: persistentvolume.go
    path of file: ./repos/octant/internal/printer
    
    the code of the file until where you have to start completion: /*
Copyright (c) 2020 the Octant contributors. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/

package printer

import (
	"context"
	"fmt"

	"github.com/pkg/errors"
	corev1 "k8s.io/api/core/v1"

	"github.com/vmware-tanzu/octant/pkg/view/component"
)

// PersistentVolumeListHandler is a printFunc that creates a component to display multiple Persistent Volumes
func PersistentVolumeListHandler(ctx context.Context, list *corev1.PersistentVolumeList, 
    
func PersistentVolumeListHandler(ctx context.Context, list *corev1.PersistentVolumeList, options Options) (component.Component, error) {
	if list == nil {
		return nil, errors.New("nil list")
	}

	cols := component.NewTableCols("Name", "Capacity", "Access Modes", "Reclaim Policy", "Status", "Claim", "Storage Class", "Reason", "Age")
	ot := NewObjectTable("Persistent Volumes", "We couldn't find any persistent volumes!", cols, options.DashConfig.ObjectStore())
	ot.EnablePluginStatus(options.DashConfig.PluginManager())
	for _, pv := range list.Items {
		row := component.TableRow{}
		nameLink, err := options.Link.ForObject(&pv, pv.Name)
		if err != nil {
			return nil, err
		}

		storage := pv.Spec.Capacity[corev1.ResourceStorage]
		capacity := storage.String()

		accessModes := getAccessModesAsString(pv.Spec.AccessModes)

		claimLink, err := createBoundPersistentVolumeClaimLink(ctx, &pv, options)
		if err != nil {
			return nil, err
		}

		row["Name"] = nameLink
		row["Capacity"] = component.NewText(capacity)
		row["Access Modes"] = component.NewText(accessModes)
		row["Reclaim Policy"] = component.NewText(string(pv.Spec.PersistentVolumeReclaimPolicy))
		row["Status"] = component.NewText(string(pv.Status.Phase))
		row["Claim"] = claimLink
		row["Storage Class"] = component.NewText(pv.Spec.StorageClassName)
		row["Reason"] = component.NewText(pv.Status.Reason)
		row["Age"] = component.NewTimestamp(pv.CreationTimestamp.Time)

		if err := ot.AddRowForObject(ctx, &pv, row); err != nil {
			return nil, fmt.Errorf("add row for object: %w", err)
		}
	}

	return ot.ToComponent()
}