Fix https://github.com/julianhyde/linq4j/issues/8, "Javadoc generation fails under JDK 1.8".
diff --git a/HISTORY.md b/HISTORY.md
index 80073ca..50d58c4 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -4,6 +4,8 @@
 
 ## <a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.2">0.2</a> / 2014-04-11
 
+* Fix <a href="https://github.com/julianhyde/linq4j/issues/8">#8</a>,
+  "Javadoc generation fails under JDK 1.8".
 * Fix <a href="https://github.com/julianhyde/linq4j/issues/15">#15</a>,
   "`Expressions.ifThenElse` does not work".
 * Use `HashMap` for searching of declarations to reuse; consider both
diff --git a/src/main/java/net/hydromatic/linq4j/Enumerable.java b/src/main/java/net/hydromatic/linq4j/Enumerable.java
index 4e6f510..b242da5 100644
--- a/src/main/java/net/hydromatic/linq4j/Enumerable.java
+++ b/src/main/java/net/hydromatic/linq4j/Enumerable.java
@@ -32,7 +32,7 @@
   /**
    * Converts this Enumerable to a Queryable.
    *
-   * @see EnumerableDefaults#asQueryable(Enumerable
+   * @see EnumerableDefaults#asQueryable(Enumerable)
    */
   Queryable<T> asQueryable();
 
diff --git a/src/main/java/net/hydromatic/linq4j/EnumerableDefaults.java b/src/main/java/net/hydromatic/linq4j/EnumerableDefaults.java
index 34f2eee..84470a0 100644
--- a/src/main/java/net/hydromatic/linq4j/EnumerableDefaults.java
+++ b/src/main/java/net/hydromatic/linq4j/EnumerableDefaults.java
@@ -118,24 +118,26 @@
   }
 
   /**
-   * Returns the input typed as Enumerable<TSource>.
+   * Returns the input typed as {@code Enumerable<TSource>}.
    *
-   * <p>The AsEnumerable<TSource>(Enumerable<TSource>) method has no effect
-   * other than to change the compile-time type of source from a type that
-   * implements Enumerable<TSource> to Enumerable<TSource> itself.
+   * <p>This method has no effect other than to change the compile-time type of
+   * source from a type that implements {@code Enumerable<TSource>} to
+   * {@code Enumerable<TSource>} itself.
    *
-   * <p>AsEnumerable<TSource>(Enumerable<TSource>) can be used to choose
+   * <p>{@code AsEnumerable<TSource>(Enumerable<TSource>)} can be used to choose
    * between query implementations when a sequence implements
-   * Enumerable<TSource> but also has a different set of public query methods
-   * available. For example, given a generic class Table that implements
-   * Enumerable<TSource> and has its own methods such as Where, Select, and
-   * SelectMany, a call to Where would invoke the public Where method of
-   * Table. A Table type that represents a database table could have a Where
-   * method that takes the predicate argument as an expression tree and
-   * converts the tree to SQL for remote execution. If remote execution is not
-   * desired, for example because the predicate invokes a local method, the
-   * AsEnumerable<TSource> method can be used to hide the custom methods and
-   * instead make the standard query operators available.
+   * {@code Enumerable<TSource>} but also has a different set of public query
+   * methods available. For example, given a generic class {@code Table} that
+   * implements {@code Enumerable<TSource>} and has its own methods such as
+   * {@code where}, {@code select}, and {@code selectMany}, a call to
+   * {@code where} would invoke the public {@code where} method of
+   * {@code Table}. A {@code Table} type that represents a database table could
+   * have a {@code where} method that takes the predicate argument as an
+   * expression tree and converts the tree to SQL for remote execution. If
+   * remote execution is not desired, for example because the predicate invokes
+   * a local method, the {@code asEnumerable<TSource>} method can be used to
+   * hide the custom methods and instead make the standard query operators
+   * available.
    */
   public static <TSource> Enumerable<TSource> asEnumerable(
       Enumerable<TSource> enumerable) {
@@ -308,7 +310,7 @@
 
   /**
    * Determines whether a sequence contains a specified
-   * element by using a specified EqualityComparer<TSource>.
+   * element by using a specified {@code EqualityComparer<TSource>}.
    */
   public static <TSource> boolean contains(Enumerable<TSource> enumerable,
       TSource element, EqualityComparer comparer) {
@@ -425,7 +427,7 @@
 
   /**
    * Produces the set difference of two sequences by
-   * using the specified EqualityComparer<TSource> to compare
+   * using the specified {@code EqualityComparer<TSource>} to compare
    * values.
    */
   public static <TSource> Enumerable<TSource> except(
@@ -724,7 +726,7 @@
   /**
    * Correlates the elements of two sequences based on
    * key equality and groups the results. A specified
-   * EqualityComparer<TSource> is used to compare keys.
+   * {@code EqualityComparer<TSource>} is used to compare keys.
    */
   public static <TSource, TInner, TKey, TResult> Enumerable<TResult> groupJoin(
       Enumerable<TSource> outer, Enumerable<TInner> inner,
@@ -761,7 +763,7 @@
 
   /**
    * Produces the set intersection of two sequences by
-   * using the specified EqualityComparer<TSource> to compare
+   * using the specified {@code EqualityComparer<TSource>} to compare
    * values.
    */
   public static <TSource> Enumerable<TSource> intersect(
@@ -803,7 +805,7 @@
 
   /**
    * Correlates the elements of two sequences based on
-   * matching keys. A specified EqualityComparer<TSource> is used to
+   * matching keys. A specified {@code EqualityComparer<TSource>} is used to
    * compare keys.
    */
   public static <TSource, TInner, TKey, TResult> Enumerable<TResult> join(
@@ -1427,7 +1429,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource> and flattens the resulting sequences into one
+   * {@code Enumerable<TSource>} and flattens the resulting sequences into one
    * sequence.
    */
   public static <TSource, TResult> Enumerable<TResult> selectMany(
@@ -1472,7 +1474,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource>, and flattens the resulting sequences into one
+   * {@code Enumerable<TSource>}, and flattens the resulting sequences into one
    * sequence. The index of each source element is used in the
    * projected form of that element.
    */
@@ -1484,7 +1486,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource>, flattens the resulting sequences into one
+   * {@code Enumerable<TSource>}, flattens the resulting sequences into one
    * sequence, and invokes a result selector function on each
    * element therein. The index of each source element is used in
    * the intermediate projected form of that element.
@@ -1498,7 +1500,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource>, flattens the resulting sequences into one
+   * {@code Enumerable<TSource>}, flattens the resulting sequences into one
    * sequence, and invokes a result selector function on each
    * element therein.
    */
@@ -1522,7 +1524,7 @@
   /**
    * Determines whether two sequences are equal by
    * comparing their elements by using a specified
-   * EqualityComparer<TSource>.
+   * {@code EqualityComparer<TSource>}.
    */
   public static <TSource> boolean sequenceEqual(Enumerable<TSource> enumerable0,
       Enumerable<TSource> enumerable1, EqualityComparer<TSource> comparer) {
@@ -1817,8 +1819,8 @@
   }
 
   /**
-   * Creates a Dictionary<TKey, TValue> from an
-   * Enumerable<TSource> according to a specified key selector function
+   * Creates a {@code Map<TKey, TValue>} from an
+   * {@code Enumerable<TSource>} according to a specified key selector function
    * and key comparer.
    */
   public static <TSource, TKey> Map<TKey, TSource> toMap(
@@ -1828,8 +1830,8 @@
   }
 
   /**
-   * Creates a Dictionary<TKey, TValue> from an
-   * Enumerable<TSource> according to specified key selector and element
+   * Creates a {@code Map<TKey, TValue>} from an
+   * {@code Enumerable<TSource>} according to specified key selector and element
    * selector functions.
    */
   public static <TSource, TKey, TElement> Map<TKey, TElement> toMap(
@@ -1851,8 +1853,8 @@
   }
 
   /**
-   * Creates a Dictionary<TKey, TValue> from an
-   * Enumerable<TSource> according to a specified key selector function,
+   * Creates a {@code Map<TKey, TValue>} from an
+   * {@code Enumerable<TSource>} according to a specified key selector function,
    * a comparer, and an element selector function.
    */
   public static <TSource, TKey, TElement> Map<TKey, TElement> toMap(
@@ -1863,7 +1865,7 @@
   }
 
   /**
-   * Creates a List<TSource> from an Enumerable<TSource>.
+   * Creates a {@code List<TSource>} from an {@code Enumerable<TSource>}.
    */
   @SuppressWarnings("unchecked")
   public static <TSource> List<TSource> toList(Enumerable<TSource> source) {
@@ -1888,8 +1890,8 @@
   }
 
   /**
-   * Creates a Lookup<TKey, TElement> from an
-   * Enumerable<TSource> according to a specified key selector function
+   * Creates a {@code Lookup<TKey, TElement>} from an
+   * {@code Enumerable<TSource>} according to a specified key selector function
    * and key comparer.
    */
   public static <TSource, TKey> Lookup<TKey, TSource> toLookup(
@@ -1900,8 +1902,8 @@
   }
 
   /**
-   * Creates a Lookup<TKey, TElement> from an
-   * Enumerable<TSource> according to specified key selector and element
+   * Creates a {@code Lookup<TKey, TElement>} from an
+   * {@code Enumerable<TSource>} according to specified key selector and element
    * selector functions.
    */
   public static <TSource, TKey, TElement> Lookup<TKey, TElement> toLookup(
@@ -1942,8 +1944,8 @@
   }
 
   /**
-   * Creates a Lookup<TKey, TElement> from an
-   * Enumerable<TSource> according to a specified key selector function,
+   * Creates a {@code Lookup<TKey, TElement>} from an
+   * {@code Enumerable<TSource>} according to a specified key selector function,
    * a comparer and an element selector function.
    */
   public static <TSource, TKey, TElement> Lookup<TKey, TElement> toLookup(
diff --git a/src/main/java/net/hydromatic/linq4j/ExtendedEnumerable.java b/src/main/java/net/hydromatic/linq4j/ExtendedEnumerable.java
index 037017d..859f4e4 100644
--- a/src/main/java/net/hydromatic/linq4j/ExtendedEnumerable.java
+++ b/src/main/java/net/hydromatic/linq4j/ExtendedEnumerable.java
@@ -83,24 +83,27 @@
   boolean any(Predicate1<TSource> predicate);
 
   /**
-   * Returns the input typed as Enumerable<TSource>.
+   * Returns the input typed as {@code Enumerable<TSource>}.
    *
-   * <p>The AsEnumerable<TSource>(Enumerable<TSource>) method has no effect
+   * <p>This method has no effect
    * other than to change the compile-time type of source from a type that
-   * implements Enumerable<TSource> to Enumerable<TSource> itself.
+   * implements {@code Enumerable<TSource>} to {@code Enumerable<TSource>}
+   * itself.
    *
-   * <p>AsEnumerable<TSource>(Enumerable<TSource>) can be used to choose
+   * <p>{@code asEnumerable<TSource>(Enumerable<TSource>)} can be used to choose
    * between query implementations when a sequence implements
-   * Enumerable<TSource> but also has a different set of public query methods
-   * available. For example, given a generic class Table that implements
-   * Enumerable<TSource> and has its own methods such as Where, Select, and
-   * SelectMany, a call to Where would invoke the public Where method of
-   * Table. A Table type that represents a database table could have a Where
-   * method that takes the predicate argument as an expression tree and
-   * converts the tree to SQL for remote execution. If remote execution is not
-   * desired, for example because the predicate invokes a local method, the
-   * AsEnumerable<TSource> method can be used to hide the custom methods and
-   * instead make the standard query operators available.
+
+   * {@code Enumerable<TSource>} but also has a different set of public query
+   * methods available. For example, given a generic class Table that implements
+   * {@code Enumerable<TSource>} and has its own methods such as {@code where},
+   * {@code select}, and {@code selectMany}, a call to {@code where} would
+   * invoke the public {@code where} method of {@code Table}. A {@code Table}
+   * type that represents a database table could have a {@code where} method
+   * that takes the predicate argument as an expression tree and converts the
+   * tree to SQL for remote execution. If remote execution is not desired, for
+   * example because the predicate invokes a local method, the
+   * {@code asEnumerable<TSource>} method can be used to hide the custom methods
+   * and instead make the standard query operators available.
    */
   Enumerable<TSource> asEnumerable();
 
@@ -222,7 +225,7 @@
 
   /**
    * Determines whether a sequence contains a specified
-   * element by using a specified EqualityComparer<TSource>.
+   * element by using a specified {@code EqualityComparer<TSource>}.
    */
   boolean contains(TSource element, EqualityComparer comparer);
 
@@ -260,7 +263,7 @@
 
   /**
    * Returns distinct elements from a sequence by using
-   * a specified EqualityComparer<TSource> to compare values.
+   * a specified {@code EqualityComparer<TSource>} to compare values.
    */
   Enumerable<TSource> distinct(EqualityComparer<TSource> comparer);
 
@@ -286,7 +289,7 @@
 
   /**
    * Produces the set difference of two sequences by
-   * using the specified EqualityComparer<TSource> to compare
+   * using the specified {@code EqualityComparer<TSource>} to compare
    * values.
    */
   Enumerable<TSource> except(Enumerable<TSource> enumerable1,
@@ -436,7 +439,7 @@
   /**
    * Correlates the elements of two sequences based on
    * key equality and groups the results. A specified
-   * EqualityComparer<TSource> is used to compare keys.
+   * {@code EqualityComparer<TSource>} is used to compare keys.
    */
   <TInner, TKey, TResult> Enumerable<TResult> groupJoin(
       Enumerable<TInner> inner, Function1<TSource, TKey> outerKeySelector,
@@ -453,7 +456,7 @@
 
   /**
    * Produces the set intersection of two sequences by
-   * using the specified EqualityComparer<TSource> to compare
+   * using the specified {@code EqualityComparer<TSource>} to compare
    * values.
    */
   Enumerable<TSource> intersect(Enumerable<TSource> enumerable1,
@@ -476,7 +479,7 @@
 
   /**
    * Correlates the elements of two sequences based on
-   * matching keys. A specified EqualityComparer<TSource> is used to
+   * matching keys. A specified {@code EqualityComparer<TSource>} is used to
    * compare keys.
    */
   <TInner, TKey, TResult> Enumerable<TResult> join(Enumerable<TInner> inner,
@@ -742,7 +745,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource> and flattens the resulting sequences into one
+   * {@code Enumerable<TSource>} and flattens the resulting sequences into one
    * sequence.
    */
   <TResult> Enumerable<TResult> selectMany(
@@ -750,7 +753,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource>, and flattens the resulting sequences into one
+   * {@code Enumerable<TSource>}, and flattens the resulting sequences into one
    * sequence. The index of each source element is used in the
    * projected form of that element.
    */
@@ -759,7 +762,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource>, flattens the resulting sequences into one
+   * {@code Enumerable<TSource>}, flattens the resulting sequences into one
    * sequence, and invokes a result selector function on each
    * element therein. The index of each source element is used in
    * the intermediate projected form of that element.
@@ -770,7 +773,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource>, flattens the resulting sequences into one
+   * {@code Enumerable<TSource>}, flattens the resulting sequences into one
    * sequence, and invokes a result selector function on each
    * element therein.
    */
@@ -788,7 +791,7 @@
   /**
    * Determines whether two sequences are equal by
    * comparing their elements by using a specified
-   * EqualityComparer<TSource>.
+   * {@code EqualityComparer<TSource>}.
    */
   boolean sequenceEqual(Enumerable<TSource> enumerable1,
       EqualityComparer<TSource> comparer);
@@ -934,8 +937,8 @@
   Enumerable<TSource> takeWhile(Predicate2<TSource, Integer> predicate);
 
   /**
-   * Creates a Dictionary<TKey, TValue> from an
-   * Enumerable<TSource> according to a specified key selector
+   * Creates a {@code Map<TKey, TValue>} from an
+   * {@code Enumerable<TSource>} according to a specified key selector
    * function.
    *
    * <p>NOTE: Called {@code toDictionary} in LINQ.NET.</p>
@@ -943,16 +946,16 @@
   <TKey> Map<TKey, TSource> toMap(Function1<TSource, TKey> keySelector);
 
   /**
-   * Creates a Dictionary<TKey, TValue> from an
-   * Enumerable<TSource> according to a specified key selector function
+   * Creates a {@code Map<TKey, TValue>} from an
+   * {@code Enumerable<TSource>} according to a specified key selector function
    * and key comparer.
    */
   <TKey> Map<TKey, TSource> toMap(Function1<TSource, TKey> keySelector,
       EqualityComparer<TKey> comparer);
 
   /**
-   * Creates a Dictionary<TKey, TValue> from an
-   * Enumerable<TSource> according to specified key selector and element
+   * Creates a {@code Map<TKey, TValue>} from an
+   * {@code Enumerable<TSource>} according to specified key selector and element
    * selector functions.
    */
   <TKey, TElement> Map<TKey, TElement> toMap(
@@ -960,8 +963,8 @@
       Function1<TSource, TElement> elementSelector);
 
   /**
-   * Creates a Dictionary<TKey, TValue> from an
-   * Enumerable<TSource> according to a specified key selector function,
+   * Creates a {@code Map<TKey, TValue>} from an
+   * {@code Enumerable<TSource>} according to a specified key selector function,
    * a comparer, and an element selector function.
    */
   <TKey, TElement> Map<TKey, TElement> toMap(
@@ -970,28 +973,28 @@
       EqualityComparer<TKey> comparer);
 
   /**
-   * Creates a List<TSource> from an Enumerable<TSource>.
+   * Creates a {@code List<TSource>} from an {@code Enumerable<TSource>}.
    */
   List<TSource> toList();
 
   /**
-   * Creates a Lookup<TKey, TElement> from an
-   * Enumerable<TSource> according to a specified key selector
+   * Creates a {@code Lookup<TKey, TElement>} from an
+   * {@code Enumerable<TSource>} according to a specified key selector
    * function.
    */
   <TKey> Lookup<TKey, TSource> toLookup(Function1<TSource, TKey> keySelector);
 
   /**
-   * Creates a Lookup<TKey, TElement> from an
-   * Enumerable<TSource> according to a specified key selector function
+   * Creates a {@code Lookup<TKey, TElement>} from an
+   * {@code Enumerable<TSource>} according to a specified key selector function
    * and key comparer.
    */
   <TKey> Lookup<TKey, TSource> toLookup(Function1<TSource, TKey> keySelector,
       EqualityComparer<TKey> comparer);
 
   /**
-   * Creates a Lookup<TKey, TElement> from an
-   * Enumerable<TSource> according to specified key selector and element
+   * Creates a {@code Lookup<TKey, TElement>} from an
+   * {@code Enumerable<TSource>} according to specified key selector and element
    * selector functions.
    */
   <TKey, TElement> Lookup<TKey, TElement> toLookup(
@@ -999,8 +1002,8 @@
       Function1<TSource, TElement> elementSelector);
 
   /**
-   * Creates a Lookup<TKey, TElement> from an
-   * Enumerable<TSource> according to a specified key selector function,
+   * Creates a {@code Lookup<TKey, TElement>} from an
+   * {@code Enumerable<TSource>} according to a specified key selector function,
    * a comparer and an element selector function.
    */
   <TKey, TElement> Lookup<TKey, TElement> toLookup(
@@ -1016,7 +1019,7 @@
 
   /**
    * Produces the set union of two sequences by using a
-   * specified EqualityComparer<TSource>.
+   * specified {@code EqualityComparer<TSource>}.
    */
   Enumerable<TSource> union(Enumerable<TSource> source1,
       EqualityComparer<TSource> comparer);
diff --git a/src/main/java/net/hydromatic/linq4j/ExtendedQueryable.java b/src/main/java/net/hydromatic/linq4j/ExtendedQueryable.java
index ff1d662..556c15a 100644
--- a/src/main/java/net/hydromatic/linq4j/ExtendedQueryable.java
+++ b/src/main/java/net/hydromatic/linq4j/ExtendedQueryable.java
@@ -182,7 +182,7 @@
 
   /**
    * Produces the set difference of two sequences by
-   * using the specified EqualityComparer<TSource> to compare
+   * using the specified {@code EqualityComparer<TSource>} to compare
    * values.
    */
   Queryable<TSource> except(Enumerable<TSource> enumerable,
@@ -302,7 +302,7 @@
   /**
    * Correlates the elements of two sequences based on
    * key equality and groups the results. A specified
-   * EqualityComparer<TSource> is used to compare keys.
+   * {@code EqualityComparer<TSource>} is used to compare keys.
    */
   <TInner, TKey, TResult> Queryable<TResult> groupJoin(Enumerable<TInner> inner,
       FunctionExpression<Function1<TSource, TKey>> outerKeySelector,
@@ -320,7 +320,7 @@
 
   /**
    * Produces the set intersection of two sequences by
-   * using the specified EqualityComparer<TSource> to compare
+   * using the specified {@code EqualityComparer<TSource>} to compare
    * values.
    */
   Queryable<TSource> intersect(Enumerable<TSource> enumerable,
@@ -338,7 +338,7 @@
 
   /**
    * Correlates the elements of two sequences based on
-   * matching keys. A specified EqualityComparer<TSource> is used to
+   * matching keys. A specified {@code EqualityComparer<TSource>} is used to
    * compare keys.
    */
   <TInner, TKey, TResult> Queryable<TResult> join(Enumerable<TInner> inner,
@@ -368,7 +368,7 @@
 
   /**
    * Invokes a projection function on each element of a
-   * generic IQueryable<TSource> and returns the maximum resulting
+   * generic {@code IQueryable<TSource>} and returns the maximum resulting
    * value.
    */
   <TResult extends Comparable<TResult>> TResult max(
@@ -376,7 +376,7 @@
 
   /**
    * Invokes a projection function on each element of a
-   * generic IQueryable<TSource> and returns the minimum resulting
+   * generic {@code IQueryable<TSource>} and returns the minimum resulting
    * value.
    */
   <TResult extends Comparable<TResult>> TResult min(
@@ -460,7 +460,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource> and combines the resulting sequences into one
+   * {@code Enumerable<TSource>} and combines the resulting sequences into one
    * sequence.
    */
   <TResult> Queryable<TResult> selectMany(
@@ -468,7 +468,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource> and combines the resulting sequences into one
+   * {@code Enumerable<TSource>} and combines the resulting sequences into one
    * sequence. The index of each source element is used in the
    * projected form of that element.
    *
@@ -481,7 +481,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource> that incorporates the index of the source
+   * {@code Enumerable<TSource>} that incorporates the index of the source
    * element that produced it. A result selector function is invoked
    * on each element of each intermediate sequence, and the
    * resulting values are combined into a single, one-dimensional
@@ -495,7 +495,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<TSource> and invokes a result selector function on each
+   * {@code Enumerable<TSource>} and invokes a result selector function on each
    * element therein. The resulting values from each intermediate
    * sequence are combined into a single, one-dimensional sequence
    * and returned.
@@ -660,7 +660,7 @@
 
   /**
    * Produces the set union of two sequences by using a
-   * specified EqualityComparer<TSource>.
+   * specified {@code EqualityComparer<TSource>}.
    */
   Queryable<TSource> union(Enumerable<TSource> source1,
       EqualityComparer<TSource> comparer);
diff --git a/src/main/java/net/hydromatic/linq4j/Extensions.java b/src/main/java/net/hydromatic/linq4j/Extensions.java
index 21d3ed3..32c3319 100644
--- a/src/main/java/net/hydromatic/linq4j/Extensions.java
+++ b/src/main/java/net/hydromatic/linq4j/Extensions.java
@@ -92,11 +92,11 @@
  * overloaded based on the number of type parameters.</li>
  *
  * <li>Types map as follows:
- * {@code Int32} => {@code int} or {@link Integer},
- * {@code Int64} => {@code long} or {@link Long},
- * {@code bool} => {@code boolean} or {@link Boolean},
- * {@code Dictionary} => {@link Map},
- * {@code Lookup} => {@link Map} whose value type is an {@link Iterable},
+ * {@code Int32} &rarr; {@code int} or {@link Integer},
+ * {@code Int64} &rarr; {@code long} or {@link Long},
+ * {@code bool} &rarr; {@code boolean} or {@link Boolean},
+ * {@code Dictionary} &rarr; {@link Map},
+ * {@code Lookup} &rarr; {@link Map} whose value type is an {@link Iterable},
  * </li>
  *
  * <li>Function types that accept primitive types in LINQ.NET have become
diff --git a/src/main/java/net/hydromatic/linq4j/QueryableDefaults.java b/src/main/java/net/hydromatic/linq4j/QueryableDefaults.java
index 0c32262..8c193d7 100644
--- a/src/main/java/net/hydromatic/linq4j/QueryableDefaults.java
+++ b/src/main/java/net/hydromatic/linq4j/QueryableDefaults.java
@@ -91,8 +91,8 @@
   }
 
   /**
-   * Converts a generic Enumerable<T> to a generic
-   * IQueryable<T>.
+   * Converts a generic {@code Enumerable<T>} to a generic
+   * {@code IQueryable<T>}.
    */
   public static <T> Queryable<T> asQueryable(Queryable<T> queryable) {
     throw Extensions.todo();
@@ -235,7 +235,7 @@
 
   /**
    * Determines whether a sequence contains a specified
-   * element by using a specified EqualityComparer<T>.
+   * element by using a specified {@code EqualityComparer<T>}.
    */
   public static <T> boolean contains(Queryable<T> queryable, T element,
       EqualityComparer comparer) {
@@ -287,7 +287,7 @@
 
   /**
    * Returns distinct elements from a sequence by using
-   * a specified EqualityComparer<T> to compare values.
+   * a specified {@code EqualityComparer<T>} to compare values.
    */
   public static <T> Queryable<T> distinct(Queryable<T> queryable,
       EqualityComparer comparer) {
@@ -323,7 +323,7 @@
 
   /**
    * Produces the set difference of two sequences by
-   * using the specified EqualityComparer<T> to compare
+   * using the specified {@code EqualityComparer<T>} to compare
    * values.
    */
   public static <T> Queryable<T> except(Queryable<T> queryable,
@@ -498,7 +498,7 @@
   /**
    * Correlates the elements of two sequences based on
    * key equality and groups the results. A specified
-   * EqualityComparer<T> is used to compare keys.
+   * {@code EqualityComparer<T>} is used to compare keys.
    */
   public static <TOuter, TInner, TKey, TResult> Enumerable<TResult> groupJoin(
       Queryable<TOuter> outer, Enumerable<TInner> inner,
@@ -522,7 +522,7 @@
 
   /**
    * Produces the set intersection of two sequences by
-   * using the specified EqualityComparer<T> to compare
+   * using the specified {@code EqualityComparer<T>} to compare
    * values.
    */
   public static <T> Queryable<T> intersect(Queryable<T> queryable,
@@ -545,7 +545,7 @@
 
   /**
    * Correlates the elements of two sequences based on
-   * matching keys. A specified EqualityComparer<T> is used to
+   * matching keys. A specified {@code EqualityComparer<T>} is used to
    * compare keys.
    */
   public static <TOuter, TInner, TKey, TResult> Queryable<TResult> join(
@@ -611,7 +611,7 @@
 
   /**
    * Returns the maximum value in a generic
-   * IQueryable<T>.
+   * {@code IQueryable<T>}.
    */
   public static <T> T max(Queryable<T> queryable) {
     throw Extensions.todo();
@@ -619,7 +619,7 @@
 
   /**
    * Invokes a projection function on each element of a
-   * generic IQueryable<T> and returns the maximum resulting
+   * generic {@code IQueryable<T>} and returns the maximum resulting
    * value.
    */
   public static <T, TResult> TResult max(Queryable<T> queryable,
@@ -629,7 +629,7 @@
 
   /**
    * Returns the minimum value in a generic
-   * IQueryable<T>.
+   * {@code IQueryable<T>}.
    */
   public static <T> T min(Queryable<T> queryable) {
     throw Extensions.todo();
@@ -637,7 +637,7 @@
 
   /**
    * Invokes a projection function on each element of a
-   * generic IQueryable<T> and returns the minimum resulting
+   * generic {@code IQueryable<T>} and returns the minimum resulting
    * value.
    */
   public static <T, TResult> TResult min(Queryable<T> queryable,
@@ -748,7 +748,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<T> and combines the resulting sequences into one
+   * {@code Enumerable<T>} and combines the resulting sequences into one
    * sequence.
    */
   public static <T, TResult> Queryable<TResult> selectMany(Queryable<T> source,
@@ -758,7 +758,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<T> and combines the resulting sequences into one
+   * {@code Enumerable<T>} and combines the resulting sequences into one
    * sequence. The index of each source element is used in the
    * projected form of that element.
    *
@@ -772,7 +772,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<T> that incorporates the index of the source
+   * {@code Enumerable<T>} that incorporates the index of the source
    * element that produced it. A result selector function is invoked
    * on each element of each intermediate sequence, and the
    * resulting values are combined into a single, one-dimensional
@@ -788,7 +788,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<T> and invokes a result selector function on each
+   * {@code Enumerable<T>} and invokes a result selector function on each
    * element therein. The resulting values from each intermediate
    * sequence are combined into a single, one-dimensional sequence
    * and returned.
@@ -816,7 +816,7 @@
 
   /**
    * Determines whether two sequences are equal by
-   * using a specified EqualityComparer<T> to compare
+   * using a specified {@code EqualityComparer<T>} to compare
    * elements.
    */
   public static <T> boolean sequenceEqual(Queryable<T> queryable,
@@ -1086,7 +1086,7 @@
 
   /**
    * Produces the set union of two sequences by using a
-   * specified EqualityComparer<T>.
+   * specified {@code EqualityComparer<T>}.
    */
   public static <T> Queryable<T> union(Queryable<T> source0,
       Enumerable<T> source1, EqualityComparer<T> comparer) {
diff --git a/src/main/java/net/hydromatic/linq4j/QueryableFactory.java b/src/main/java/net/hydromatic/linq4j/QueryableFactory.java
index 34c2ce9..9eceb47 100644
--- a/src/main/java/net/hydromatic/linq4j/QueryableFactory.java
+++ b/src/main/java/net/hydromatic/linq4j/QueryableFactory.java
@@ -166,7 +166,7 @@
 
   /**
    * Determines whether a sequence contains a specified
-   * element by using a specified EqualityComparer<T>.
+   * element by using a specified {@code EqualityComparer<T>}.
    */
   boolean contains(Queryable<T> source, T element,
       EqualityComparer<T> comparer);
@@ -205,7 +205,7 @@
 
   /**
    * Returns distinct elements from a sequence by using
-   * a specified EqualityComparer<T> to compare values.
+   * a specified {@code EqualityComparer<T>} to compare values.
    */
   Queryable<T> distinct(Queryable<T> source, EqualityComparer<T> comparer);
 
@@ -231,7 +231,7 @@
 
   /**
    * Produces the set difference of two sequences by
-   * using the specified EqualityComparer<T> to compare
+   * using the specified {@code EqualityComparer<T>} to compare
    * values.
    */
   Queryable<T> except(Queryable<T> source, Enumerable<T> enumerable,
@@ -450,13 +450,13 @@
 
   /**
    * Returns the maximum value in a generic
-   * IQueryable<T>.
+   * {@code IQueryable<T>}.
    */
   T max(Queryable<T> source);
 
   /**
    * Invokes a projection function on each element of a
-   * generic IQueryable<T> and returns the maximum resulting
+   * generic {@code IQueryable<T>} and returns the maximum resulting
    * value.
    */
   <TResult extends Comparable<TResult>> TResult max(Queryable<T> source,
@@ -464,13 +464,13 @@
 
   /**
    * Returns the minimum value in a generic
-   * IQueryable<T>.
+   * {@code IQueryable<T>}.
    */
   T min(Queryable<T> source);
 
   /**
    * Invokes a projection function on each element of a
-   * generic IQueryable<T> and returns the minimum resulting
+   * generic {@code IQueryable<T>} and returns the minimum resulting
    * value.
    */
   <TResult extends Comparable<TResult>> TResult min(Queryable<T> source,
@@ -536,7 +536,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<T> and combines the resulting sequences into one
+   * {@code Enumerable<T>} and combines the resulting sequences into one
    * sequence.
    */
   <TResult> Queryable<TResult> selectMany(Queryable<T> source,
@@ -544,7 +544,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<T> and combines the resulting sequences into one
+   * {@code Enumerable<T>} and combines the resulting sequences into one
    * sequence. The index of each source element is used in the
    * projected form of that element.
    */
@@ -553,7 +553,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<T> that incorporates the index of the source
+   * {@code Enumerable<T>} that incorporates the index of the source
    * element that produced it. A result selector function is invoked
    * on each element of each intermediate sequence, and the
    * resulting values are combined into a single, one-dimensional
@@ -566,7 +566,7 @@
 
   /**
    * Projects each element of a sequence to an
-   * Enumerable<T> and invokes a result selector function on each
+   * {@code Enumerable<T>} and invokes a result selector function on each
    * element therein. The resulting values from each intermediate
    * sequence are combined into a single, one-dimensional sequence
    * and returned.
@@ -770,7 +770,7 @@
 
   /**
    * Produces the set union of two sequences by using a
-   * specified EqualityComparer<T>.
+   * specified {@code EqualityComparer<T>}.
    */
   Queryable<T> union(Queryable<T> source, Enumerable<T> source1,
       EqualityComparer<T> comparer);
diff --git a/src/main/java/net/hydromatic/linq4j/expressions/ExpressionType.java b/src/main/java/net/hydromatic/linq4j/expressions/ExpressionType.java
index 439c67f..0277ce8 100644
--- a/src/main/java/net/hydromatic/linq4j/expressions/ExpressionType.java
+++ b/src/main/java/net/hydromatic/linq4j/expressions/ExpressionType.java
@@ -74,15 +74,14 @@
   AddChecked(" + ", false, 4, false),
 
   /**
-   * A bitwise or logical AND operation, such as (a &amp; b) in C# and
-   * (a And b) in Visual Basic.
+   * A bitwise or logical AND operation, such as {@code a &amp; b} in Java.
    */
   And(" & ", false, 8, false),
 
   /**
    * A conditional AND operation that evaluates the second operand
    * only if the first operand evaluates to true. It corresponds to
-   * (a && b) in C# and (a AndAlso b) in Visual Basic.
+   * {@code a && b} in Java.
    */
   AndAlso(" && ", false, 11, false),
 
@@ -94,12 +93,12 @@
 
   /**
    * An indexing operation in a one-dimensional array, such as
-   * array[index] in C# or array(index) in Visual Basic.
+   * {@code array[index]} in Java.
    */
   ArrayIndex,
 
   /**
-   * A method call, such as in the obj.sampleMethod()
+   * A method call, such as in the {@code obj.sampleMethod()}
    * expression.
    */
   Call(".", false, 1, false),
@@ -111,8 +110,7 @@
   Coalesce,
 
   /**
-   * A conditional operation, such as a > b ? a : b in C# or
-   * If(a > b, a, b) in Visual Basic.
+   * A conditional operation, such as {@code a > b ? a : b} in Java.
    */
   Conditional(" ? ", " : ", false, 13, true),
 
@@ -122,16 +120,16 @@
   Constant,
 
   /**
-   * A cast or conversion operation, such as (SampleType)obj in
-   * C#or CType(obj, SampleType) in Visual Basic. For a numeric
+   * A cast or conversion operation, such as {@code (SampleType) obj} in
+   * Java. For a numeric
    * conversion, if the converted value is too large for the
    * destination type, no exception is thrown.
    */
   Convert(null, false, 2, true),
 
   /**
-   * A cast or conversion operation, such as (SampleType)obj in
-   * C#or CType(obj, SampleType) in Visual Basic. For a numeric
+   * A cast or conversion operation, such as {@code (SampleType) obj} in
+   * Java. For a numeric
    * conversion, if the converted value does not fit the
    * destination type, an exception is thrown.
    */
@@ -144,14 +142,13 @@
   Divide(" / ", false, 3, false),
 
   /**
-   * A node that represents an equality comparison, such as (a
-   * == b) in C# or (a = b) in Visual Basic.
+   * A node that represents an equality comparison, such as {@code a == b} in
+   * Java.
    */
   Equal(" == ", false, 7, false),
 
   /**
-   * A bitwise or logical XOR operation, such as (a ^ b) in C#
-   * or (a Xor b) in Visual Basic.
+   * A bitwise or logical XOR operation, such as {@code a ^ b} in Java.
    */
   ExclusiveOr(" ^ ", false, 9, false),
 
@@ -173,13 +170,12 @@
   Invoke,
 
   /**
-   * A lambda expression, such as a =&gt; a + a in C# or
-   * Function(a) a + a in Visual Basic.
+   * A lambda expression, such as {@code a -&gt; a + a} in Java.
    */
   Lambda,
 
   /**
-   * A bitwise left-shift operation, such as (a &lt;&lt; b).
+   * A bitwise left-shift operation, such as {@code a << b} in Java.
    */
   LeftShift(" << ", false, 5, false),
 
diff --git a/src/main/java/net/hydromatic/linq4j/expressions/Expressions.java b/src/main/java/net/hydromatic/linq4j/expressions/Expressions.java
index 3a34fdf..d3be4b3 100644
--- a/src/main/java/net/hydromatic/linq4j/expressions/Expressions.java
+++ b/src/main/java/net/hydromatic/linq4j/expressions/Expressions.java
@@ -710,8 +710,8 @@
   }
 
   /**
-   * Creates a DynamicExpression that represents a dynamic
-   * operation bound by the provided CallSiteBinder, using varargs.
+   * Creates a {@code DynamicExpression} that represents a dynamic
+   * operation bound by the provided {@code CallSiteBinder}, using varargs.
    */
   public static DynamicExpression dynamic(CallSiteBinder binder, Type type,
       Expression... expression) {
@@ -719,7 +719,7 @@
   }
 
   /**
-   * Creates an ElementInit, given an Iterable<T> as the second
+   * Creates an {@code ElementInit}, given an {@code Iterable<T>} as the second
    * argument.
    */
   public static ElementInit elementInit(Method method,