What does the listaddressgroupings rpc method do? Can anyone please explain the listaddressgroupings rpc method? Its documentation isn't clear in Bitcoin Core

Lists groups of addresses which have had their common ownership
made public by common use as inputs or as the resulting change
in past transactions

Result:
[
  [
    [
      "bitcoinaddress",     (string) The bitcoin address
      amount,                 (numeric) The amount in btc
      "account"             (string, optional) The account
    ]
    ,...
  ]
  ,...
]


????
listaddressgroupings is a RPC call that really could have been left an internal method, but the core devs decided to expose it in order to give users more control and awareness of Bitcoin's privacy issues.

Let me explain:

As you probably know, when you make a purchase, the bitcoind or bitcoin-qt client (which both use bitcoin-core) return your change by default to a new address.  Well, if decide to use that address for another transaction, you have created a chain of "connectable" transactions.  If you're not careful, there are various other ways that you can create connected transactions (like always using the same receiving address).  However, if you already generate a new address to receive Bitcoins, this isn't a problem.  

There are already numerous programs available that have the ability to scan the blockchain and list such connected transaction chains, which are definite proof that the addresses in question are or have been in the same wallet.

listaddressgroupings is a method that allow users to have the same ability to discern which groups of their addresses are connected on the public blockchain.  It allows users to use the (relatively) new coin control functionality with greater awareness of potential privacy-revealing issues.