code: function (contract, params, funAbi, linkLibraries, linkReferences, callback) {
      this.encodeParams(params, funAbi, (error, encodedParam) => {
        if (error) return callback(error)
        var bytecodeToDeploy = contract.evm.bytecode.object
        if (bytecodeToDeploy.indexOf('_') >= 0) {
          if (linkLibraries && linkReferences) {
            for (var libFile in linkLibraries) {
              for (var lib in linkLibraries[libFile]) {
                var address = linkLibraries[libFile][lib]
                if (!ethJSUtil.isValidAddress(address)) return callback(address + ' is not a valid address. Please check the provided address is valid.')
                bytecodeToDeploy = this.linkLibraryStandardFromlinkReferences(lib, address.replace('0x', ''), bytecodeToDeploy, linkReferences)
              }
            }
          }
        }
        if (bytecodeToDeploy.indexOf('_') >= 0) {
          return callback('Failed to link some libraries')
        }
        return callback(null, { dataHex: bytecodeToDeploy + encodedParam.dataHex, funAbi, funArgs: encodedParam.funArgs, contractBytecode: contract.evm.bytecode.object })
      })
    }
docs: encode constructor creation and link with provided libraries if needed
  
  @param {Object} contract    - input paramater of the function to call
  @param {Object} params    - input paramater of the function to call
  @param {Object} funAbi    - abi definition of the function to call. null if building data for the ctor.
  @param {Object} linkLibraries    - contains {linkReferences} object which list all the addresses to be linked
  @param {Object} linkReferences    - given by the compiler, contains the proper linkReferences
  @param {Function} callback    - callback