public static Either <ParseException, Pair <List <IToken>, PrimitiveTypeNode> > Parse(List <IToken> tokens)
 {
     Console.WriteLine("PrimitiveTypeNode");
     return
         (IntegerTypeNode.Parse(tokens)
          .Map(p => new Pair <List <IToken>, PrimitiveTypeNode>(p.First, p.Second)) ||
          RealTypeNode.Parse(tokens)
          .Map(p => new Pair <List <IToken>, PrimitiveTypeNode>(p.First, p.Second)) ||
          BooleanTypeNode.Parse(tokens)
          .Map(p => new Pair <List <IToken>, PrimitiveTypeNode>(p.First, p.Second))
         );
 }