{
    "all": "any type",
    "application": {
        "array": "<%= prefix %> <%= codeTagOpen %>Array<%= codeTagClose %> of <%= application %> <%= suffix %>",
        "object": "<%= prefix %> <%= codeTagOpen %>Object<%= codeTagClose %> with <%= application %> properties <%= suffix %>",
        "objectNonString": "<%= prefix %> <%= codeTagOpen %>Object<%= codeTagClose %> with <%= keyApplication %> keys and <%= application %> properties <%= suffix %>",
        "other": "<%= prefix %> <%= codeTagOpen %><%= type %> containing <%= application %> <%= suffix %>"
    },
    "function": {
        "extended": {
            "new": "Returns <%= functionNew %> when called with <%= codeTagOpen %>new<%= codeTagClose %>.",
            "returns": "Returns <%= type %>.",
            "signature": "function(<%= functionParams %>)",
            "this": "Within the function, <%= codeTagOpen %>this<%= codeTagClose %> refers to <%= functionThis %>."
        },
        "simple": {
            "new": "constructs <%= functionNew %>",
            "returns": "returns <%= type %>",
            "signature": "<%= prefix %> function(<%= functionParams %>) <%= functionReturns %>",
            "this": "<%= codeTagOpen %>this<%= codeTagClose %> = <%= functionThis %>"
        }
    },
    "modifiers": {
        "extended": {
            "nonNullable": "Must not be null.",
            "nullable": "May be null.",
            "optional": "Optional.",
            "prefix": "",
            "repeatable": "May be provided more than once.",
            "suffix": ""
        },
        "simple": {
            "nonNullable": "non-null",
            "nullable": "nullable",
            "optional": "optional",
            "prefix": "<%= optional %> <%= nullable %> <%= repeatable %>",
            "repeatable": "repeatable",
            "suffix": ""
        }
    },
    "name": "<%= codeTagOpen %>{{ name }}<%= codeTagClose %> <%= suffix %>",
    "null": "null",
    "params": {
        "first": {
            "one": "<%= param %>",
            "two": "<%= param %>, ",
            "many": "<%= param %>, "
        },
        "middle": {
            "many": "<%= param %>, "
        },
        "last": {
            "two": "<%= param %>",
            "many": "<%= param %>"
        }
    },
    "record": {
        "first": {
            "one": "<%= prefix %> {<%= field %>} <%= suffix %>",
            "two": "<%= prefix %> {<%= field %>, ",
            "many": "<%= prefix %> {<%= field %>, "
        },
        "middle": {
            "many": "<%= field %>, "
        },
        "last": {
            "two": "<%= field %>} <%= suffix %>",
            "many": "<%= field %>} <%= suffix %>"
        }
    },
    "field": {
        "typed": "<%= name %>: <%= type %>",
        "untyped": "<%= name %>"
    },
    "type": "<%= prefix %> <%= codeTagOpen %><%= type %><%= codeTagClose %> <%= suffix %>",
    "undefined": "undefined",
    "union": {
        "first": {
            "one": "<%= prefix %> <%= element %> <%= suffix %>",
            "two": "<%= prefix %> (<%= element %> ",
            "many": "<%= prefix %> (<%= element %>, "
        },
        "middle": {
            "many": "<%= element %>, "
        },
        "last": {
            "two": "or <%= element %>) <%= suffix %>",
            "many": "or <%= element %>) <%= suffix %>"
        }
    },
    "unknown": "unknown"
}
