TODO: rename to Definition as this is what this is
TODO: Do not set default values, but infer those
TODO: add javadoc on the setter methods
TODO: add @Metadata to define the default values
TODO: add required=true if its required (such as name and paramType I would assume)