Prosecution Insights
Last updated: April 19, 2026
Application No. 18/345,878

OPTIMIZATION OF ATTRIBUTE ACCESS IN PROGRAMMING FUNCTIONS

Non-Final OA §103§112
Filed
Jun 30, 2023
Examiner
MITCHELL, JASON D
Art Unit
2199
Tech Center
2100 — Computer Architecture & Software
Assignee
BMC Software, Inc.
OA Round
3 (Non-Final)
55%
Grant Probability
Moderate
3-4
OA Rounds
4y 2m
To Grant
86%
With Interview

Examiner Intelligence

Grants 55% of resolved cases
55%
Career Allow Rate
342 granted / 623 resolved
At TC average
Strong +31% interview lift
Without
With
+31.4%
Interview Lift
resolved cases with interview
Typical timeline
4y 2m
Avg Prosecution
32 currently pending
Career history
655
Total Applications
across all art units

Statute-Specific Performance

§101
10.4%
-29.6% vs TC avg
§103
49.4%
+9.4% vs TC avg
§102
14.2%
-25.8% vs TC avg
§112
20.0%
-20.0% vs TC avg
Black line = Tech Center average estimate • Based on career data from 623 resolved cases

Office Action

§103 §112
Notice of Pre-AIA or AIA Status The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . Response to Arguments Claim Rejections under 35 U.S.C. §103 Applicant's arguments filed 1/12/26 have been fully considered but they are not persuasive. Initially it is noted that the rejection addresses the limitation(s) in question as obvious in view of Alvanos. Accordingly, the applicant’s description of Matsuoka and Tal is immaterial and thus will not be directly addressed here. Finally, Alvanos does not describe replacing the loop variable with a collection of variables corresponding to an object followed by a chosen variable for each attribute access. Instead, Alvanos describes an optimization where remote data is pre-fetched into local buffers (arrays) and then accessed via indices. "The dereference runtime call receives the address and size of the shared reference, returns the address of the local data buffer used by the runtime to prefetch the shared reference, and stores the appropriate buffer index into a local variable." Alvanos at [0081]. "Each shared reference can accordingly be replaced with a local access by using the buffer and the buffer index." Alvanos at [0081]. "The compiler searches through statements of the inner main loop and epilogue loop to replace the shared access with a local access in the buffer returned by the runtime call of dereference." Alvanos at [0081]. (emphasis added) The applicant has not explicitly asserted a distinction over Alvanos, instead merely juxtaposing specific passages without further discussion. Here the examiner understands Alvanos’ buffers/arrays to fall within a reasonably broad understanding of the claimed “object of the loop variable” and their “index” to fall within a reasonably broad understanding of the claimed variable. More specifically, Alanos’ buffer/array would have been considered an “object” in the prior art and is generated, at least partially, with regard to the loop variable, and is thus reasonably considered an “object of the loop variable” as claimed. Whereas their “index” identifies an individual stored value and thus would have reasonably been construed as a ”variable” (note e.g. the claim does not explicitly require a variable “name”). Accordingly, at least without more, the claims do not appear to distinguish over the cited references and the claim(s) remain rejected. Claim Rejections - 35 USC § 112 The following is a quotation of 35 U.S.C. 112(b): (b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention. The following is a quotation of 35 U.S.C. 112 (pre-AIA ), second paragraph: The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention. Claims 1, 3-8, 10-15, and 17-21 are rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention. Claim 1 recites “replacing the loop variable with a collection of variables corresponding to an object of the loop variable followed by a chosen variable for each of the attribute access”. Here the presented language does not make clear if the “chosen variable” requires the variable to be “chosen” from the “collection of variables” or some other variable found in the code or created specifically for this use. For the purposes of this examination the former understanding will be used. Claims 3-7 depend from claim 1 and are rejected accordingly. Claims 8 and 15 recite language similar to that of claim 1 and are thus similarly rejected. Claims 10-14, and 17-21 depend from claim 1 and are rejected accordingly. Claim Rejections - 35 USC § 103 In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status. The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action: A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made. Claim(s) 1, 3-8, 11-15, and 17-21 is/are rejected under 35 U.S.C. 103 as being unpatentable over US 2017/0017473 to Matsuoka et al. (Matsuoka) in view of US 2006/0048115 to Tal et al. (Tal) in view of US 2013/0167130 to Alvanos et al. (Alvanos). Claims 1, 8 and 15: Matsuoka discloses a computer program product for optimizing attribute accesses, the computer program product being tangibly embodied on a non-transitory computer-readable storage medium and comprising instructions that, when executed by at least one computing device, are configured to cause the at least one computing device to: receive a first data structure, the first data structure including a first sequence of statements representing programming functions having an input and an output (par. [0083] “retrieves the source code form the source file “ca””); parse the first sequence of statements to collect attribute accesses defined in the first sequence of statements (par. [0083] “detects the structure or the array having the member targeted for access in the loop processing”, See e.g. Fig. 10, par. [0130] “reads one line of code from the source file “ca””); transform the first data structure and the first sequence of statements defining the attribute accesses to a second data structure including a second sequence of statements representing the programming functions having the input and the output (par. [0084]-[0085] “inserts the first code declaring a pointer variable and the second code setting an address of the structure or the array … replaces a code accessing the member … with a code accessing the member based on the pointer variable”, also see fig. 5), wherein the first sequence of statements includes a loop expression defining a loop variable and the second sequence of statements defines a smaller number of the attribute accesses than the first sequence of statements (par. [0076] “reduce the number of times of the calculation processing of address “p1”-“p14” by moving the calculation process of the address “p1”-“p14” outside the third loop”); output the second data structure (par. [0108] “The optimized source file”). Matsuoka does not explicitly teach: processing the second data structure by the at least one computing device, wherein the second data structure including the second sequence of statements generates a same output result as the first data structure using the smaller number of attribute accesses than the first data structure and the first sequence of statements. Tal teaches: processing the second data structure by the at least one computing device, wherein the second data structure including the second sequence of statements generates a same output result as the first data structure using the smaller number of attribu5te accesses than the first data structure and the first sequence of statements (par. [0123] “initializes temporary variables 1102 and inserts feeder statements 1104, 1106 and 1108”, par. [0125] “reducing the number of memory access required in a program loop”). It would have been obvious at the time of filing to process the second data structure using a smaller number of attribute accesses. Those of ordinary skill in the art would have been motivated to do so to enhance performance (see e.g. Tal par. [0125]). Matsuoka and Tal do not explicitly teach: wherein transforming the first data structure includes: replacing the loop expression with a bulk expression that performs and returns a bulk data retrieval for the attribute accesses in a single operation, and replacing the loop variable with a collection of variables corresponding to an object of the loop variable followed by a chosen variable for each of the attribute access. Alvanos teaches: wherein transforming the first data structure includes: replacing the loop expression with a bulk expression that performs and returns a bulk data retrieval for the attribute accesses in a single operation (par. [0087] “the coalesced entries … combine entries of a same identified pattern comprising remote accesses”, [0088] “calls the proper communication functions to start fetching the associated shared data of the coalesced entry”, par. [0094] “versions the loop into a set of loops, storing shared access associated information of the loop using a prologue loop … coalesces entries … using a single network communication”), and replacing the loop variable with a collection of variables corresponding to an object of the loop variable followed by a chosen variable for each of the attribute access (par. [0081] “each shared reference can accordingly be replaced with a local access by using the buffer and the buffer index”) It would have been obvious at the time of filing to replace the loop expression with a bulk expression and replace the loop variable with a collection of variables (Alvanos par. [0087] “the coalesced entries … combine entries of a same identified pattern comprising remote accesses”, par. [0081] “each shared reference can accordingly be replaced with a local access by using the buffer and the buffer index”). Those of ordinary skill in the art would have been motivated to do so as a known loop optimization which would have reduced network traffic and improved the execution of the loop. Claims 3, 10 and 17: Matsuoka, Tal and Alvanos teach claims 1, 8 and 15, wherein: the loop expression includes a loop body (e.g. Matsuoka Fig. 1, lp1, lp2, lp3); and the instructions, when executed, are further configured to cause the at least one computing device to: recursively replace all the attribute accesses in the loop body with values from the bulk data retrieval (Matsuoka par. [0085] “replaces a code accessing the member … with a code accessing the member based on the pointer variable”, Alvanos par. [0094] “entries of the reduced data structure”). Claims 4, 11 and 18: Matsuoka, Tal and Alvanos teach claims 1, 8 and 15, wherein the instructions, when executed, are further configured to cause the at least one computing device to: parse the first sequence of statements by traversing the first sequence of statements in a first pass (e.g. Fig. 10, “Read one Line form Source File” S31, S36); record information for the attribute accesses in a memory during the first pass (Fig. 10 “write Detected code in loop statement detection table”, S34, “write code in loop statement detection table”); and transform the first data structure and the first sequence of statements by traversing the first sequence of statements in a second pass using the information for the attribute accesses recorded in the memory (e.g. Fig. 16, “Replace code accessing to member in loop processing with code accessing based on pointer variable”, S104). Claims 5, 12 and 19: Matsuoka, Tal and Alvanos teach claims 4, 11 and 18, wherein the information for the attribute accesses in the memory includes: a first table comprising a first mapping from a variable name to a generation number for a variable corresponding to the variable name (e.g. Fig. 11, “Variable in the loop”, “No”); and a second table comprising a second mapping from pairs of the variable name and the generation number to names of attributes read from the pairs (e.g. Fig. 16, “No”, “Loop Constitution”). Claims 6, 13 and 20: Matsuoka, Tal and Alvanos teach claims 1, 8 and 15, wherein the attribute accesses include remote attribute accesses (Alvanos par. [0087] “the coalesced entries comprise remote accesses”). Claims 7, 14 and 21: Matsuoka, Tal and Alvanos teach claims 1, 8 and 15, wherein the instructions, when executed, are further configured to cause the at least one computing device to parse the first sequence of statements, transform the first data structure, and output the second data structure without user intervention (e.g. Matsuoka par. [0072] “processing of compiler program”). Conclusion Any inquiry concerning this communication or earlier communications from the examiner should be directed to JASON D MITCHELL whose telephone number is (571)272-3728. The examiner can normally be reached Monday through Thursday 7:00am - 4:30pm and alternate Fridays 7:00am 3:30pm. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Lewis Bullock can be reached at (571)272-3759. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /JASON D MITCHELL/Primary Examiner, Art Unit 2199
Read full office action

Prosecution Timeline

Jun 30, 2023
Application Filed
Mar 07, 2025
Non-Final Rejection — §103, §112
Aug 12, 2025
Response Filed
Oct 08, 2025
Final Rejection — §103, §112
Jan 12, 2026
Request for Continued Examination
Jan 24, 2026
Response after Non-Final Action
Feb 04, 2026
Non-Final Rejection — §103, §112 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12591423
Determining a security patch for a cyberattack by executing simulations of different security protocols
2y 5m to grant Granted Mar 31, 2026
Patent 12585575
Auto-Complete Testing
2y 5m to grant Granted Mar 24, 2026
Patent 12572346
OTA MASTER, METHOD, AND NON-TRANSITORY STORAGE MEDIUM
2y 5m to grant Granted Mar 10, 2026
Patent 12561122
SOFTWARE PACKAGE UPDATE HANDLING
2y 5m to grant Granted Feb 24, 2026
Patent 12561119
Live Range Reduction to Enhance Register Allocation of Structured Control Flow Programs
2y 5m to grant Granted Feb 24, 2026
Study what changed to get past this examiner. Based on 5 most recent grants.

AI Strategy Recommendation

Get an AI-powered prosecution strategy using examiner precedents, rejection analysis, and claim mapping.
Powered by AI — typically takes 5-10 seconds

Prosecution Projections

3-4
Expected OA Rounds
55%
Grant Probability
86%
With Interview (+31.4%)
4y 2m
Median Time to Grant
High
PTA Risk
Based on 623 resolved cases by this examiner. Grant probability derived from career allow rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month