Trying to use a ContentTreeFieldWidget, why am I getting 'List' object has no attribute 'source' error?

I'm trying to use the ContentTreeFieldWidget for a field in my form, but I'm getting an error:

AttributeError: 'List' object has no attribute 'source'

I have this as my interface.

from zope import schema
from plone.formwidget.contenttree import ContentTreeFieldWidget, PathSourceBinder
from plone.directives import form
from my.product.specification import ISpecification

class IMyContentType(form.Schema):


I tried basing my example on the distribution page:

I used form.widgets in the interface instead of widgetFactory in the form class though.

When I used widgetFactory, I just get an error in the javascript:

ReferenceError: copyDataForSubmit is not defined

Also, I've used the schema.List(value_type=schema.Choice()) elsewhere too.

Why does this approach not work?