* This is not perfect but does a good enough job for most common cases.
* We don't generate type information yet, _get_type is stubbed out.
* This tries to ast parse source that may contain an error. * We don't try to fully error recover from unlimited problems, but a single statement that is being edited can be tolerated by commenting out lines around it