protected ClassNode getInferredReturnTypeFromWithClosureArgument(Expression callArguments) {
        if (!(callArguments instanceof ArgumentListExpression)) return null;

        ArgumentListExpression argList = (ArgumentListExpression) callArguments;
        ClosureExpression closure = (ClosureExpression) argList.getExpression(0);

        visitClosureExpression(closure);

        if (getInferredReturnType(closure) != null) {
            return getInferredReturnType(closure);
        }

        return null;
    }
protected ClassNode getInferredReturnTypeFromWithClosureArgument ( Expression callArguments ) { if ( ! ( callArguments instanceof ArgumentListExpression ) ) return null ; ArgumentListExpression argList = ( ArgumentListExpression ) callArguments ; ClosureExpression closure = ( ClosureExpression ) argList . getExpression ( 0 ) ; visitClosureExpression ( closure ) ; if ( getInferredReturnType ( closure ) != null ) { return getInferredReturnType ( closure ) ; } return null ; }
In the case of a <em>Object.with { ... }</em> call, this method is supposed to retrieve
the inferred closure return type.

@param callArguments the argument list from the <em>Object#with(Closure)</em> call, ie. a single closure expression
@return the inferred closure return type or <em>null</em>