implements Tree.parent and Tree.scratchpad, also renames SourceContext