Installed: eosio: 1.7.3; eosio.cdt: 1.6.1

Implemented and locally deployed: sample `market` contract and `eosio.token` contract. In order to make an inline transfer from `market` contract in behalf of a user, I am using the following logic:

```
transfer_tokens(buyer, seller, asset(tokensToTransfer, symbol("ABC", 4)), "transfer tokens to seller");
```
```
void market::transfer_tokens(name from, name to, asset quantity, string memo)
{
    token::transfer_action transfer("eosio.token"_n, {from, "active"_n});
    transfer.send(from, to, quantity, memo);
}
```
This way `market` contract will spend buyer's tokens, since it has been already authorized to do that.

Accounts/Permissions configuration:

**buyer**
```
"account_name": "buyer",
  "permissions": [{
      "perm_name": "active",
      "parent": "owner",
      "required_auth": {
        "threshold": 1,
        "keys": [{
            "key": "EOS8WqoYNnZZFHsgAhHRbcbVJWS7gpxJhPZ18pyVWDZ2nDMpgbdC8",
            "weight": 1
          }
        ],
        "accounts": [{
            "permission": {
              "actor": "market",
              "permission": "eosio.code"
            },
            "weight": 1
          }
        ],
        "waits": []
      }
    }
```
**market**

```
"account_name": "market",
  "permissions": [{
      "perm_name": "active",
      "parent": "owner",
      "required_auth": {
        "threshold": 1,
        "keys": [{
            "key": "EOS6hG7kidcSWFtq9asuyUK2HqpykoTeQiej5gdEkpmvphZnkZDA3",
            "weight": 1
          }
        ],
        "accounts": [{
            "permission": {
              "actor": "market",
              "permission": "eosio.code"
            },
            "weight": 1
          }
        ],
        "waits": []
      }
    }
```
**eosio.token**
```
"account_name": "eosio.token",
  "permissions": [{
      "perm_name": "active",
      "parent": "owner",
      "required_auth": {
        "threshold": 1,
        "keys": [{
            "key": "EOS5qurrzztw3rJMLfbXSC8K2GQUf2U43Ms11Rp3LNCYZscwFZznn",
            "weight": 1
          }
        ],
        "accounts": [{
            "permission": {
              "actor": "eosio.token",
              "permission": "eosio.code"
            },
            "weight": 1
          }
        ],
        "waits": []
      }
    }
```