readonly and optional are reserved keywords so need to be escaped with a leading underscore per WebIDL spec