This section is drawn from the documentation.