code: private RValue[] executeInvoke(Expr.Invoke expr, CallStack frame) {
  		// Resolve function or method being invoked to a concrete declaration
  		Decl.Callable decl = expr.getLink().getTarget();
  		// Evaluate argument expressions
  		RValue[] arguments = executeExpressions(expr.getOperands(), frame);
  		// Invoke the function or method in question
  		RValue[] rs = execute(decl.getQualifiedName(), decl.getType(), frame, arguments);
  		return rs;
  	}
docs: Execute an Invoke bytecode instruction at a given point in the function
  or method body. This generates a recursive call to execute the given
  function. If the function does not exist, or is provided with the wrong
  number of arguments, then a runtime fault will occur.
  
  @param expr
  --- The expression to execute
  @param frame
  --- The current stack frame
  @return
  @throws ResolutionError