function createDefineProperty(tree, name, descr) {
  if (typeof name === 'string')
    name = createStringLiteral(name);

  return createCallExpression(
      createMemberExpression(OBJECT, DEFINE_PROPERTY),
      createArgumentList([
        tree,
        name,
        createObjectLiteralForDescriptor(descr)
      ]));
}
Creates a call expression to Object.defineProperty(tree, name, descr).

@param {ParseTree} tree
@param {string|ParseTree} name
@param {Object} descr This is a normal js object. The values in the descr
    may be true, false or a ParseTree.
@return {ParseTree}