let (|CSharpConstStub|_|) (fn:Method) = if fn.Name.ToString() @ "get_" then None else match MapToTypes fn.Body.Statements with | [NodeType.Block; NodeType.Block] -> let block1 = fn.Body.Statements.[0] :?> Block let block2 = fn.Body.Statements.[1] :?> Block match (MapToTypes block1.Statements, MapToTypes block2.Statements) with | ( [NodeType.Nop; NodeType.AssignmentStatement; NodeType.Branch], [NodeType.Return]) -> let ass = block1.Statements.[1] :?> AssignmentStatement let branch = block1.Statements.[2] :?> Branch if branch.Target <> block2 || null <> branch.Condition then None elif ass.Source.NodeType <> NodeType.MemberBinding && ass.Source.NodeType <> NodeType.Literal then None else match (block2.Statements.[0], ass.Target) with | ReturnTemp -> Some() | _ -> None | _ -> None | _ -> None