Diagnostic represents information to be presented to a user about an error or anomaly in parsing or evaluating configuration.
Value parameters
subject
Subject and Context are both source ranges relating to the diagnostic. Subject is a tight range referring to exactly the construct that is problematic, while Context is an optional broader range (which should fully contain Subject) that ought to be shown around Subject when generating isolated source-code snippets in diagnostic messages. If Context is nil, the Subject is also the Context. Some diagnostics have no source ranges at all. If Context is set then Subject should always also be set.
summary
Summary and Detail contain the English-language description of the problem. Summary is a terse description of the general problem and detail is a more elaborate, often-multi-sentence description of the problem and what might be done to solve it.