code: private Expr parseQualifiedAccess(EnclosingScope scope, boolean terminated) {
  		int start = index;
  		// Parse qualified name
  		Name name = parseName(scope);
  		// Construct link to be resolved
  		Decl.Link link = new Decl.Link<>(name);
  		// Decide what we've got
  		int mid = index;
  		Expr expr;
  		if (skipTemplate(scope) && tryAndMatch(terminated, LeftBrace) != null) {
  			// backtrack
  			index = mid;
  			// parse any optional template arguments
  			Tuple<? extends SyntacticItem> templateArguments = parseOptionalTemplateArguments(scope, terminated);
  			// Construct binding to be resolved
  			Decl.Binding<Type.Callable, Decl.Callable> binding = new Decl.Binding<>(link, templateArguments);
  			// Repeat this
  			match(LeftBrace);
  			// Parse arguments to invocation
  			Tuple<Expr> arguments = parseInvocationArguments(scope);
  			// This indicates we have an direct invocation
  			expr = new Expr.Invoke(binding, arguments);
  		} else {
  			// Must be a qualified static variable access
  			expr = new Expr.StaticVariableAccess(Type.Void, link);
  		}
  		return annotateSourceLocation(expr, start);
  	}
docs: Attempt to parse a possible module identifier. This will reflect a true
  module identifier only if the root variable is not in the given
  environment.
  
  @param src
  @param scope
  The enclosing scope for this statement, which determines the
  set of visible (i.e. declared) variables and also the current
  indentation level.
  @return