When languages developed higher level features such as if-then and while-do, it was discovered that flowcharts have too many degrees of freedom to be truly reliable. While originally developed as a methodology of creating a program design, they later evolved into an automatically generated documentation of a design created otherwise.