303 | /// Function Definition Table syntax:
304 | ///
305 | /// - FDT ::= FDTRow [;FDTRow]*
306 | /// - FDTRow ::= Input => Output | Output <= Input
307 | /// - Input ::= ParameterName: Value [, Input]*
308 | /// - Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value}
309 | /// - Value ::= true | false | null | notnull | canbenull
310 | ///
311 | /// If the method has a single input parameter, its name could be omitted.
312 | /// Using halt (or void/nothing, which is the same) for the method output
313 | /// means that the method doesn't return normally (throws or terminates the process).
314 | /// Value canbenull is only applicable for output parameters.
315 | /// You can use multiple [ContractAnnotation] for each FDT row, or use single attribute
316 | /// with rows separated by semicolon. There is no notion of order rows, all rows are checked
317 | /// for applicability and applied per each program state tracked by the analysis engine.
318 | ///
319 | ///