Graph Object Figure layout trace mapping

I am using the low level Graph object API. I have multiple traces in my Figure. And each trace has a separate x and y axis.

trace1 = go.Scatter(x=df[‘A’], y=df[‘B’], xaxis=“x1”, yaxis=“y1”)
trace2 = go.Scatter(x=df[‘C’], y=df[‘D’], xaxis=“x2”, yaxis=“y2”)
fig.update_layout(xaxis1=dict(domain=[0, 0.80]), xaxis2=dict(domain=[0.85, 1], fixedrange=True))
fig.update_layout(yaxis1=dict(domain=[0, 0.7], range=[8,11]), yaxis2=dict(domain=[0.7, 1], range=[12,21]))

I am getting the desired output that I need. However, I am not able to understand how plotly is establishing relationship between a trace and a layout. How does plotly know that x1 corresponds to xaxis1 and y1 to yaxis1.