public IStatementContext AddStatement(StatementSyntax statement) { if (statement is ExpressionStatementSyntax exp) { subexpressions.Add(exp.Expression); } else { var returnType = ScriptDataType.Void; var annotations = statement.GetAnnotations(ScriptGenAnnotations.TypeAnnotationKind); if (annotations.Any()) { returnType = (ScriptDataType)int.Parse(annotations.First().Data); } subexpressions.Add(SyntaxUtil.CreateImmediatelyInvokedFunction(returnType, new[] { statement })); } return(this); }