code: func Snatives(output Output) func(cmd *cli.Cmd) {
  	return func(cmd *cli.Cmd) {
  		contractsOpt := cmd.StringsOpt("c contracts", nil, "Contracts to generate")
  		cmd.Action = func() {
  			contracts := evm.SNativeContracts()
  			// Index of next contract
  			i := 1
  			for _, contract := range contracts {
  				if len(*contractsOpt) > 0 {
  					found := false
  					for _, c := range *contractsOpt {
  						if c == contract.Name {
  							found = true
  							break
  						}
  					}
  					if !found {
  						continue
  					}
  				}
  				solidity, err := templates.NewSolidityContract(contract).Solidity()
  				if err != nil {
  					fmt.Printf("Error generating solidity for contract %s: %s\n",
  						contract.Name, err)
  				}
  				fmt.Println(solidity)
  				if i < len(contracts) {
  					// Two new lines between contracts as per Solidity style guide
  					// (the template gives us 1 trailing new line)
  					fmt.Println()
  				}
  				i++
  			}
  		}
  	}
  }
docs: // Dump SNative contracts