TranslationUnit[0:0->7:0] FunctionDeclaration[0:0->7:0] NamedType[0:0->0:2] int foo ( ) FunctionDefinition[1:0->7:0] { IfStatement[2:4->3:16] Predicate: NumericLiteral[2:8->2:8] 2 Then: ReturnStatement[3:8->3:16] NumericLiteral[3:15->3:15] 2 IfStatement[4:4->5:16] Predicate: BinaryExpression[4:8->4:12] NumericLiteral[4:8->4:8] 1 < NumericLiteral[4:12->4:12] 2 Then: ReturnStatement[5:8->5:16] NumericLiteral[5:15->5:15] 1 ReturnStatement[6:4->6:12] NumericLiteral[6:11->6:11] 0 }