public new static TypeReference Parse(ContextNode parent, IAbstractSyntaxTree lexerNode) { Contract.Requires(lexerNode.Type == Lexer.TokenType.Type || lexerNode.Type == Lexer.TokenType.FullSymbol); Contract.Ensures(Contract.Result <TypeReference>() != null); if (lexerNode.Type == Lexer.TokenType.FullSymbol) { TypeNode node = DotOperatorNode.Parse(parent, lexerNode) as TypeNode; if (node != null) { return(node.ParsedType); } else { ErrorCode.TypeExpected.ReportAndThrow(parent.Parser.GetSequencePoint(lexerNode), "Type expected"); } } TypeBuilder builder = new TypeBuilder(parent); foreach (var node in lexerNode.Children) { builder.Append(node); } return(builder.Type); }