code: function extractContractDefinitions (sourcesList) {
    var ret = {
      contractsById: {},
      contractsByName: {},
      sourcesByContract: {}
    }
    var walker = new AstWalker()
    for (var k in sourcesList) {
      walker.walk(sourcesList[k].legacyAST, { 'ContractDefinition': function (node) {
        ret.contractsById[node.id] = node
        ret.sourcesByContract[node.id] = k
        ret.contractsByName[k + ':' + node.attributes.name] = node
        return false
      }})
    }
    return ret
  }
docs: return all contract definitions of the given @astList
  
  @param {Object} sourcesList - sources list (containing root AST node)
  @return {Object} - returns a mapping from AST node ids to AST nodes for the contracts