This sections documents extended versions of the program 
transformation predicates that also transform the source layout 
information. Extended layout information is currently processed, but 
unused. Future versions will use for the following enhancements:
- More precise locations of warnings and errors
- More reliable setting of breakpoints
- More reliable source layout information in the graphical debugger.
- expand_goal(+Goal1, 
?Layout1, -Goal2, -Layout2)
- goal_expansion(+Goal1, 
?Layout1, -Goal2, -Layout2)
- expand_term(+Term1, 
?Layout1, -Term2, -Layout2)
- term_expansion(+Term1, 
?Layout1, -Term2, -Layout2)
- dcg_translate_rule(+In, 
?LayoutIn, -Out, -LayoutOut)
- These versions are called before their 2-argument counterparts. 
The input layout term is either a variable (if no layout information is 
available) or a term carrying detailed layout information as returned by 
the subterm_positionsof read_term/2. 
The output layout should be a variable if no layout information can be 
computed for the expansion; a sub-term can also be a variable to 
indicate “don't know” .