code: public Type parseDefiniteType(EnclosingScope scope) {
  		int start = index; // backtrack point
  		try {
  			Type type = parseType(scope);
  			if (mustParseAsType(type)) {
  				return type;
  			}
  		} catch (SyntacticException e) {
  
  		}
  		index = start; // backtrack
  		return null;
  	}
docs: Attempt to parse something which maybe a type, or an expression. The
  semantics of this function dictate that it returns an instanceof
  Type *only* if what it finds *cannot* be parsed as an
  expression, but can be parsed as a type. Otherwise, the state is left
  unchanged.
  
  @return An instance of Type or null.