docs: protected void validateFrom(
  		SqlNode node,
  		RelDataType targetRowType,
  		SqlValidatorScope scope) {
  		Objects.requireNonNull(targetRowType);
  		switch (node.getKind()) {
  			case AS:
  				validateFrom(
  					((SqlCall) node).operand(0),
  					targetRowType,
  					scope);
  				break;
  			case VALUES:
  				validateValues((SqlCall) node, targetRowType, scope);
  				break;
  			case JOIN:
  				validateJoin((SqlJoin) node, scope);
  				break;
  			case OVER:
  				validateOver((SqlCall) node, scope);
  				break;
  			case UNNEST:
  				validateUnnest((SqlCall) node, scope, targetRowType);
  				break;
  			default:
  				validateQuery(node, scope, targetRowType);
  				break;
  		}
  
  		// Validate the namespace representation of the node, just in case the
  		// validation did not occur implicitly.
  		getNamespace(node, scope).validate(targetRowType);
  	}