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