[ <!--Accessing <address>.balance: using .balance-->
expression[matches(text()[1], "\.balance")]
<!--Accessing any of the members of block, tx, msg (with the exception of msg.sig and msg.data)-->
or environmentalVariable[matches(text()[1], "msg\.value|msg\.gas|msg\.sender|block\.timestamp|tx\.origin|block\.blockhash|block\.coinbase|block\.difficulty|block\.gaslimit|block\.number|block\.blockhash|block\.coinbase|tx\.gasprice")]
<!--Using selfdestruct and it's alias suicide:-->
or functionCall/functionName//identifier[matches(text()[1], "^selfdestruct$|^suicide$")]
<!--Sending Ether via calls:-->
or functionCall/functionName//identifier[matches(text()[1], "^send$|^transfer$")]
<!--Using low-level calls:-->
or functionCall/functionName//identifier[matches(text()[1], "^call$|^delegatecall$|^callcode$")]
<!--Using inline assembly that contains certain opcodes:-->
function returnsenderbalance() pure returns (uint){
y=msg.value;
o=block.timestamp;
selfdestruct(f);
return t;
}
function returnsenderbalance() pure returns (uint){
return t;
}
function test() pure public returns (string memory name) {
name = type(Math).name;
}
}
contract Math {
function Mul(uint a, uint b) pure internal returns (uint) {
uint c = a * b;
//check result should not be other wise until a=0
assert(a == 0 || c / a == b);
return c;
}
}
```
### Abstract Syntax Tree
[Click Here](https://astexplorer.net/#/gist/14aff10a00dee0abaa5aefea19b06b67/240082f90aa3338f718f482b61e83381c3b516c2) to view the AST for the above code. Code generated from AST Explorer using _solidity-parser-antlr-0.4.11_