code: 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;
      }
docs: 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>