`KeyError: 'required'` in https://docs.snapcraft.io/writing-local-plugins/5125

I’m following the documentation at https://docs.snapcraft.io/writing-local-plugins/5125 for creating a plugin. One difference that may be relevant is that I’m using core18. The error I get is

$ snapcraft --debug

Launching a VM.
Searching for local plugin for gradle-application
Sorry, an error occurred in Snapcraft.
We would appreciate it if you anonymously reported this issue.
No other data than the traceback (’/tmp/tmpb3mi5uwl/trace.txt’) and the version of snapcraft in use will be sent.
Would you like to send this error data? (Yes/No/Always) [no]:
snapcraft-scelight # cat /tmp/tmpb3mi5uwl/trace.txt
Traceback (most recent call last):
File “/snap/snapcraft/2374/bin/snapcraft”, line 11, in
load_entry_point(‘snapcraft==3.0.1’, ‘console_scripts’, ‘snapcraft’)()
File “/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/cli/main.py”, line 81, in run
run_snapcraft(prog_name=“snapcraft”)
File “/snap/snapcraft/2374/lib/python3.5/site-packages/click/core.py”, line 722, in call
return self.main(*args, **kwargs)
File “/snap/snapcraft/2374/lib/python3.5/site-packages/click/core.py”, line 697, in main
rv = self.invoke(ctx)
File “/snap/snapcraft/2374/lib/python3.5/site-packages/click/core.py”, line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/snap/snapcraft/2374/lib/python3.5/site-packages/click/core.py”, line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/snap/snapcraft/2374/lib/python3.5/site-packages/click/core.py”, line 535, in invoke
return callback(*args, **kwargs)
File “/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/cli/lifecycle.py”, line 236, in snap
_execute(steps.PRIME, parts=[], pack_project=True, output=output, **kwargs)
File “/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/cli/lifecycle.py”, line 93, in _execute
project_config = project_loader.load_config(project)
File “/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/project_loader/init.py”, line 47, in load_config
return Config(project)
File “/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/project_loader/_config.py”, line 242, in init
build_tools=self.build_tools,
File “/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/project_loader/_parts_config.py”, line 52, in init
self._process_parts()
File “/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/project_loader/_parts_config.py”, line 71, in _process_parts
self.load_part(part_name, plugin_name, properties)
File “/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/project_loader/_parts_config.py”, line 186, in load_part
definitions_schema=self._validator.definitions_schema,
File “/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/pluginhandler/_plugin_loader.py”, line 41, in load_plugin
plugin_name, plugin_class, part_schema, definitions_schema
File “/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/pluginhandler/_plugin_loader.py”, line 112, in _validate_pull_and_build_properties
part_schema, definitions_schema, plugin.schema()
File “/root/project/snap/plugins/gradle_application.py”, line 16, in schema
schema[‘required’].append(‘my-property’)
KeyError: ‘required’
snapcraft-scelight # exit

I can make the error go away by updating the schema method:

    if 'required' not in schema:
        schema['required'] = []