code: function Call(callee,args,opexists){
  	this._traversed = false;
  	this._expression = false;
  	this._parens = false;
  	this._cache = null;
  	this._receiver = null;
  	this._opexists = opexists;
  	// some axioms that share the same syntax as calls will be redirected from here
  	
  	if (callee instanceof VarOrAccess) {
  		var str = callee.value().symbol();
  		if (str == 'extern') {
  			callee.value().value()._type = 'EXTERN';
  			return new ExternDeclaration(args);
  		};
  		if (str == 'tag') {
  			// console.log "ERROR - access args by some method"
  			return new TagWrapper((args && args.index) ? args.index(0) : args[0]);
  		};
  		if (str == 'export') {
  			return new Export(args);
  		};
  	};
  	
  	this._callee = callee;
  	this._args = args || new ArgList([]);
  	
  	if (args instanceof Array) {
  		this._args = new ArgList(args);
  	};
  	
  	if (callee instanceof Decorator) {
  		callee._call = this;
  		return callee;
  	};
  	
  	return this;
  }
docs: CALL