whole_func_string: function checkIndentInFunctionBlock(node) {
  
  		// Search first caller in chain.
  		// Ex.:
  		//
  		// Models <- Identifier
  		//   .User
  		//   .find()
  		//   .exec(function() {
  		//   // function body
  		// });
  		//
  		// Looks for 'Models'
  		var calleeNode = node.parent; // FunctionExpression
  		var indent;
  
  		if (calleeNode.parent &&
  			(calleeNode.parent.type === "Property" ||
  			calleeNode.parent.type === "ArrayExpression")) {
  			// If function is part of array or object, comma can be put at left
  			indent = getNodeIndent(calleeNode, false, false);
  		} else {
  			// If function is standalone, simple calculate indent
  			indent = getNodeIndent(calleeNode);
  		}
  
  		if (calleeNode.parent.type === "CallExpression") {
  			var calleeParent = calleeNode.parent;
  
  			if (calleeNode.type !== "FunctionExpression" && calleeNode.type !== "ArrowFunctionExpression") {
  				if (calleeParent && calleeParent.loc.start.line < node.loc.start.line) {
  					indent = getNodeIndent(calleeParent);
  				}
  			} else {
  				if (isArgBeforeCalleeNodeMultiline(calleeNode) &&
  					calleeParent.callee.loc.start.line === calleeParent.callee.loc.end.line && !isNodeFirstInLine(calleeNode)) {
  					indent = getNodeIndent(calleeParent);
  				}
  			}
  		}
  
  		// function body indent should be indent + indent size
  		indent += indentSize;
  
  		// check if the node is inside a variable
  		var parentVarNode = getVariableDeclaratorNode(node);
  		if (parentVarNode && isNodeInVarOnTop(node, parentVarNode)) {
  			indent += indentSize * options.VariableDeclarator[parentVarNode.parent.kind];
  		}
  
  		if (node.body.length > 0) {
  			checkNodesIndent(node.body, indent);
  		}
  
  		checkLastNodeLineIndent(node, indent - indentSize);
  	}
func_code_string: function checkIndentInFunctionBlock(node) {
  
  		// Search first caller in chain.
  		// Ex.:
  		//
  		// Models <- Identifier
  		//   .User
  		//   .find()
  		//   .exec(function() {
  		//   // function body
  		// });
  		//
  		// Looks for 'Models'
  		var calleeNode = node.parent; // FunctionExpression
  		var indent;
  
  		if (calleeNode.parent &&
  			(calleeNode.parent.type === "Property" ||
  			calleeNode.parent.type === "ArrayExpression")) {
  			// If function is part of array or object, comma can be put at left
  			indent = getNodeIndent(calleeNode, false, false);
  		} else {
  			// If function is standalone, simple calculate indent
  			indent = getNodeIndent(calleeNode);
  		}
  
  		if (calleeNode.parent.type === "CallExpression") {
  			var calleeParent = calleeNode.parent;
  
  			if (calleeNode.type !== "FunctionExpression" && calleeNode.type !== "ArrowFunctionExpression") {
  				if (calleeParent && calleeParent.loc.start.line < node.loc.start.line) {
  					indent = getNodeIndent(calleeParent);
  				}
  			} else {
  				if (isArgBeforeCalleeNodeMultiline(calleeNode) &&
  					calleeParent.callee.loc.start.line === calleeParent.callee.loc.end.line && !isNodeFirstInLine(calleeNode)) {
  					indent = getNodeIndent(calleeParent);
  				}
  			}
  		}
  
  		// function body indent should be indent + indent size
  		indent += indentSize;
  
  		// check if the node is inside a variable
  		var parentVarNode = getVariableDeclaratorNode(node);
  		if (parentVarNode && isNodeInVarOnTop(node, parentVarNode)) {
  			indent += indentSize * options.VariableDeclarator[parentVarNode.parent.kind];
  		}
  
  		if (node.body.length > 0) {
  			checkNodesIndent(node.body, indent);
  		}
  
  		checkLastNodeLineIndent(node, indent - indentSize);
  	}
func_documentation_string: Check indent for function block content
  @param {ASTNode} node node to examine
  @returns {void}